【Nim】重载操作符

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/aqtata/article/details/82590352

先看个例子

var i = 0

echo i # 0
inc(i)
echo i # 1

能否像C++那样通过"i++"这样的语法自增呢?Nim提供了这种可能:重载操作符

proc `++`(val: var int) =
    inc(val)

var i = 0

echo i # 0
inc(i)
echo i # 1
++i
echo i # 2

Nim只支持"+a"和"a+b"这种方式,也就是操作符可以在表达式的前面或者中间,不可以出现在后面,所以无法实现"i++"的写法,只能是"++i",再来看看"a+b"模式

proc `+`(val1, val2: int): int =
    result = val1 * val2

echo 5 + 10 # 实际上变为了乘法操作,输出50

总结:

操作符用撇号括起来

操作符重载只能是"+a"和"a+b"这两种方式

猜你喜欢

转载自blog.csdn.net/aqtata/article/details/82590352