| 1 | pub struct Vector { |
| 2 | vec []f64 |
| 3 | } |
| 4 | |
| 5 | pub 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 | |
| 19 | type Vec = Vector |
| 20 | |
| 21 | fn 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 |