From 2dc091356d946f2d2edf0c14ce88914db1378d9a Mon Sep 17 00:00:00 2001 From: Vinicius Silva Date: Tue, 26 Dec 2023 16:09:52 -0300 Subject: [PATCH 1/4] Insert string.v file --- 03_variables/strings.v | 82 ++++++++++++++++++++++++++++++++++++++++++ 06_repetitions/for.v | 1 - 2 files changed, 82 insertions(+), 1 deletion(-) create mode 100644 03_variables/strings.v diff --git a/03_variables/strings.v b/03_variables/strings.v new file mode 100644 index 0000000..5f43d11 --- /dev/null +++ b/03_variables/strings.v @@ -0,0 +1,82 @@ +pub fn main() +{ + mut name := 'Bob' + + assert name.len == 3 + assert name[0] == u8(66) + assert name[1..3] == 'ob' + + windows_newline := '\r\n' + assert windows_newline.len == 2 + + aardvark_str := '\x61ardvark' + assert aardvark_str == 'aardvark' + assert '\xc0'[0] == u8(0xc0) + + aardvark_str2 := '\141ardvark' + assert aardvark_str2 == 'aardvark' + + start_str := '\u2605' + //assert start_str == '*' + assert start_str == '\xe2\x98\x85' + + s := 'hello 🌎' + arr := s.bytes() + + assert s.len == 10 + + s2 := arr.bytestr() + assert s2 == s + + mut s1 := 'hello 🌎' + assert s1 == 'hello 🌎' + // s1[0] = 'H' Not allowed + + country := 'Netherlands' + println(country[0]) + println(country[0].ascii_str()) + + s3 := r'hello\nworld' + println(s3) + + s4 := '42' + n := s4.int() + + assert n == 42 + + assert '0xc3'.int() == 195 + assert '0o10'.int() == 8 + assert '0b1111_0000_1010'.int() == 3850 + assert '-0b1111_0000_1010'.int() == -3850 + + name = 'Bob' + println('Hello, ${name}!') + + x := 123.4567 + + println('[${x:.2}]') + println('[${x:10}]') + println('[${int(x):-10}]') + println('[${int(x):010}]') + println('[${int(x):b}]') + println('[${int(x):o}]') + println('[${int(x):X}]') + println('[${10.0000:.2}]') + println('[${10.0000:.2f}]') + + name = 'Bob' + bobby := name + 'by' + println(bobby) + mut s5 := 'hello ' + s5 += 'world' + println(s5) + + age := 10 + println('age = ${age}') + age1 := 11 + println('age = ${age1.str()}') + age2 := 12 + println('age = ${age2}') + + +} \ No newline at end of file diff --git a/06_repetitions/for.v b/06_repetitions/for.v index 753cade..f6beec8 100644 --- a/06_repetitions/for.v +++ b/06_repetitions/for.v @@ -1,4 +1,3 @@ - pub fn main() { // ==================================== // From 3e9479f7cff80b78f1e5ffc31a283e68828157a1 Mon Sep 17 00:00:00 2001 From: Vinicius Silva Date: Tue, 26 Dec 2023 17:36:27 -0300 Subject: [PATCH 2/4] runes.v implemented --- 03_variables/runes.v | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 03_variables/runes.v diff --git a/03_variables/runes.v b/03_variables/runes.v new file mode 100644 index 0000000..511d0bf --- /dev/null +++ b/03_variables/runes.v @@ -0,0 +1,21 @@ +pub fn main() +{ + rocket := `🚀` + assert rocket.str() == '🚀' + println(rocket) + + assert rocket.bytes() == [u8(0xf0),0x9f, 0x9a,0x80] + + assert `\x61` == `a` + assert `\x141` == `a` + assert `\x0061` == `a` + + rocket_string := '🚀' + assert rocket_string[0] != `🚀` + assert 'aloha!'[0] == `a` + + hello := 'Hello World 👋' + hello_runes := hello.runes() + assert hello_runes.string() == hello + +} \ No newline at end of file From fc624c5318a21855c2b1a9f29063f90859f8ab43 Mon Sep 17 00:00:00 2001 From: Vinicius Silva Date: Tue, 26 Dec 2023 18:00:52 -0300 Subject: [PATCH 3/4] Fix syntax in numbers.v --- 03_variables/numbers.v | 39 +++++++++++++++++++++++++++++++++++++++ 03_variables/runes.v | 4 ++-- 2 files changed, 41 insertions(+), 2 deletions(-) create mode 100644 03_variables/numbers.v diff --git a/03_variables/numbers.v b/03_variables/numbers.v new file mode 100644 index 0000000..a440b9f --- /dev/null +++ b/03_variables/numbers.v @@ -0,0 +1,39 @@ +pub fn main() +{ + a := 123 + d := 0x7B + b := 0b01111011 + c := 0o123 + + assert a == 123 + assert d == 0x7B + assert b == 0b1111011 + assert c == 0o123 + + num := 1_000_000 + three := 0b0_11 + hexa := 0xF_F + oct := 0o17_3 + + assert num == 1_000_000 + assert three == 0b0_11 + assert hexa == 0xF_F + assert oct == 0o17_3 + + a1 := i64(123) + b1 := u8(42) + c1 := i16(12345) + + assert a1 == 123 + assert b1 == 42 + assert c1 == 12345 + + f0 := 42e1 + f1 := 123e-2 + f2 := 456e+2 + + assert f0 == 42e1 + assert f1 == 123e-2 + assert f2 == 456e+2 + +} \ No newline at end of file diff --git a/03_variables/runes.v b/03_variables/runes.v index 511d0bf..777e0a5 100644 --- a/03_variables/runes.v +++ b/03_variables/runes.v @@ -7,8 +7,8 @@ pub fn main() assert rocket.bytes() == [u8(0xf0),0x9f, 0x9a,0x80] assert `\x61` == `a` - assert `\x141` == `a` - assert `\x0061` == `a` + //assert `\x141` == `a` + //assert `\x0061` == `a` rocket_string := '🚀' assert rocket_string[0] != `🚀` From 45227f70396b0f081753ddd769ca375bbf05ed59 Mon Sep 17 00:00:00 2001 From: Vinicius Silva Date: Tue, 26 Dec 2023 20:48:48 -0300 Subject: [PATCH 4/4] 07_collections directory created --- 07_collections/arrays.v | 86 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 07_collections/arrays.v diff --git a/07_collections/arrays.v b/07_collections/arrays.v new file mode 100644 index 0000000..42356ef --- /dev/null +++ b/07_collections/arrays.v @@ -0,0 +1,86 @@ +pub fn main() +{ + mut nums := [1,2,3] + + println(nums) + println(nums[0]) + println(nums[1]) + + nums[1] = 5 + println(nums) + + // ===================================== // + + nums << 4 + println(nums) + + mut names := ['John'] + names << 'Peter' + names << 'Sam' + println(names) + + names1 := ['John', 'Peter', 'Sam'] + println('Alex' in names1) + + // ===================================== // + + mut nums1 := [1,2,3] + println('len ${nums1.len}') + println('cap ${nums1.cap}') + + nums1 = [] + + println('len ${nums1.len}') + println('cap ${nums1.cap}') + + // ===================================== // + + mut a := []int{len: 10000, cap: 30000, init: 3} + + println(a[0]) + + // ===================================== // + + arr := []int{len: 5, init: -1} // [-1,-1,-1,-1,-1] + users := []int{} // Empty + + assert arr.len == 5 + assert users == [] + + mut numbers := []int{cap: 1000} + + println(numbers.len) + + for i in 0 .. 1000 { + numbers << i + } + + // ===================================== // + + count := []int{len: 4, init: index} + assert count == [0,1,2,3] + mut square := []int{len: 6, init: index * index} + assert square[2] == 4 + + mut object_list := []ObjectSumType{} + object_list << Point{1,1} + object_list << Line{ + p1 : Point{3,3} + p2 : Point{4,4} + } + + dump(object_list) + +} + +type ObjectSumType = Line | Point + +struct Point{ + x int + y int +} + +struct Line{ + p1 Point + p2 Point +}