v2 / vlib / v / tests / aliases / alias_operator_overloading_test.v
31 lines · 28 sloc · 433 bytes · 6488041a749df9762348d019c4223908c476f2e2
Raw
1pub struct Vector {
2 vec []f64
3}
4
5pub fn (a Vector) + (b Vector) Vector {
6 size := a.vec.len
7 if size != b.vec.len {
8 panic('unequal sizes')
9 }
10 mut c := []f64{len: size}
11 for i in 0 .. size {
12 c[i] = a.vec[i] + b.vec[i]
13 }
14 return Vector{
15 vec: c
16 }
17}
18
19type Vec = Vector
20
21fn test_alias_operator_overloading() {
22 a := Vec{
23 vec: [0.1, 0.2]
24 }
25 b := Vec{
26 vec: [0.3, 0.2]
27 }
28 c := a + b
29 println(c)
30 assert c.vec == [0.4, 0.4]
31}
32