我想对回归的优先顺序做一点澄清 声明,似乎违背了一般优先权 规则。
例如表达式
^ 2 + 3.
返回5(这就是我想要的)但是不应该从一元运算符返回2 其中^是一个优先于+是二进制?
答案 0 :(得分:10)
Smalltalk中没有“一元运营商”。只有3个优先级:一元消息(“接收者消息”),二元运算符(“接收者+参数”)和n元关键字消息(“接收者消息:参数1”)。在所有情况下,接收器都是第一位的。
所以“^”不是运算符,而是表示return语句。类似地,在“-4”中,“ - ”不是运算符,而是数字文字的一部分。
答案 1 :(得分:3)
返回符号^是为数不多的语言内置构造之一。 Smalltalk将返回^符号后面的表达式的值。
答案 2 :(得分:1)
Smalltalk's ^真的是一个操作员吗?我想这是一个保留的符号。当周围的方法返回时,“晃来晃去”+ 3会发生什么?我认为行为是正确的,因为return语句是在“普通”Smalltalk方法中发生的最后一个语句。
此致