11
为什么R在下面的工作?为什么`:=`作为中缀运算符?
> `:=` <- function(x, y) x + y
> 1 := 2
[1] 3
我的理解是%
是用户定义的中缀操作符所必需的。是否有其他(可能更容易打字)选项?
为什么R在下面的工作?为什么`:=`作为中缀运算符?
> `:=` <- function(x, y) x + y
> 1 := 2
[1] 3
我的理解是%
是用户定义的中缀操作符所必需的。是否有其他(可能更容易打字)选项?
这是因为:=
是,像<-
或<<-
,定义为LEFT_ASSIGN
为R.
的解析器见http://svn.r-project.org/R/trunk/src/main/gram.y
这意味着:=
是一个特殊的情况下,你可能也没有想到,其他任何选项可用。
奇怪的是,你可以用荒谬的定义掩盖现有的非%中缀操作符。 –
对我来说更奇怪的是':='只是为解析器定义的,但是':='的定义不存在。 – kohske
感谢@kohske。看看这个代码,看起来':='是解析器唯一识别的“备用”令牌。 – pete