tomo/test/metamethods.tm

52 lines
1.1 KiB
Plaintext
Raw Normal View History

2024-07-01 09:30:07 -07:00
struct Vec2(x,y:Int):
func __add(a,b:Vec2; inline)->Vec2:
return Vec2(a.x+b.x, a.y+b.y)
2024-07-04 10:40:09 -07:00
func __subtract(a,b:Vec2; inline)->Vec2:
2024-07-01 09:30:07 -07:00
return Vec2(a.x-b.x, a.y-b.y)
2024-07-04 10:40:09 -07:00
func __multiply(a,b:Vec2; inline)->Int:
2024-07-01 09:30:07 -07:00
return a.x*b.x + a.y*b.y
2024-07-04 10:40:09 -07:00
func __multiply2(a:Vec2,b:Int; inline)->Vec2:
2024-07-01 09:30:07 -07:00
return Vec2(a.x*b, a.y*b)
2024-07-04 10:40:09 -07:00
func __multiply3(a:Int,b:Vec2; inline)->Vec2:
2024-07-01 09:30:07 -07:00
return Vec2(a*b.x, a*b.y)
2024-07-04 10:40:09 -07:00
func __multiply4(a,b:Vec2; inline)->Vec2:
2024-07-01 09:30:07 -07:00
return Vec2(a.x*b.x, a.y*b.y)
func __negative(v:Vec2; inline)->Vec2:
return Vec2(-v.x, -v.y)
func __length(v:Vec2; inline)->Int:
return 2
2024-07-01 09:30:07 -07:00
func main():
>> x := Vec2(10, 20)
>> y := Vec2(100, 200)
>> x + y
= Vec2(x=110, y=220)
>> x - y
= Vec2(x=-90, y=-180)
>> x * y
= 5000
>> x * -1
= Vec2(x=-10, y=-20)
>> -10 * x
= Vec2(x=-100, y=-200)
>> x = Vec2(1, 2)
>> x += Vec2(10, 20)
= Vec2(x=11, y=22)
>> x *= Vec2(10, -1)
= Vec2(x=110, y=-22)
>> x = Vec2(1, 2)
>> -x
= Vec2(x=-1, y=-2)
>> #x
= 2