加号+
用于加法和字符串连接,但它的伴随符号:减号-
通常看不到减号或除减法以外的其他情况。这可能是什么原因或局限性?
考虑下面的JavaScript示例:
var a = "abcdefg";
var b = "efg";
a-b == NaN
// but
a+b == "abcdefgefg"
+
运算符被两个完全不相关的含义“数字加法”和“字符串串联”重载是非常糟糕的。值得庆幸的是,有些语言提供一个单独的连接运算符,如.
(Perl5中,PHP),~
(Perl6),&
(VB), ++
(哈斯克尔),...
->
(考虑取消C语言中的成员访问,因为虚拟方法调用必然涉及类似指针的间接访问)。.
尽管这是一种越来越普遍的约定,但是没有语言设计法则要求方法调用/成员访问权限才能使用运算符。您知道Smalltalk没有方法调用运算符吗?简单的并置object method
就足够了。