mirror of
https://github.com/erg-lang/erg.git
synced 2025-07-09 22:25:22 +00:00
26 lines
644 B
Python
26 lines
644 B
Python
Point = Class {x = Int; y = Int}
|
|
Point.
|
|
new x, y = Point {x; y}
|
|
norm self = self::x**2 + self::y**2
|
|
Point|<: Add(Point)|.
|
|
Output = Point
|
|
# This is same as `__add__ self, other: Point = ...`
|
|
`_+_` self, other: Point =
|
|
Point.new(self::x + other::x, self::y + other::y)
|
|
Point|<: Mul(Point)|.
|
|
Output = Int
|
|
`*` self, other: Point =
|
|
self::x * other::x + self::y * other::y
|
|
Point|<: Eq|.
|
|
`==` self, other: Point =
|
|
self::x == other::x and self::y == other::y
|
|
|
|
p = Point.new 1, 2
|
|
|
|
q = Point.new 3, 4
|
|
|
|
r: Point = p + q
|
|
s: Int = p * q
|
|
assert s == 11
|
|
assert r == Point.new 4, 6
|
|
assert r.norm() == 52
|