struct Vec { x int y int } fn (a Vec) str() string { return '{$a.x, $a.y}' } fn (a Vec) + (b Vec) Vec { return Vec { a.x + b.x, a.y + b.y } } fn (a Vec) - (b Vec) Vec { return Vec { a.x - b.x, a.y - b.y } } fn main() { a := Vec{2, 3} b := Vec{4, 5} println(a + b) // ==> "{6, 8}" println(a - b) // ==> "{-2, -2}" }
运算符重载违背了V的简单性和可预测性的理念。 但由于科学和图形应用程序也属于V的应用范围,因此为了提高可读性,运算符重载非常重要:
a.add(b).add(c.mul(d))
的可读性远远不及 a + b + c * d
。
为了提高安全性和可维护性,运算符重载有几个局限性:
+
、-
、*
、/
运算符。