2011-09-14 47 views
11

为什么R在下面的工作?为什么`:=`作为中缀运算符?

> `:=` <- function(x, y) x + y 
> 1 := 2 
[1] 3 

我的理解是%是用户定义的中缀操作符所必需的。是否有其他(可能更容易打字)选项?

回答

11

这是因为:=是,像<-<<-,定义为LEFT_ASSIGN为R.
的解析器见http://svn.r-project.org/R/trunk/src/main/gram.y

这意味着:=是一个特殊的情况下,你可能也没有想到,其他任何选项可用。

+0

奇怪的是,你可以用荒谬的定义掩盖现有的非%中缀操作符。 –

+0

对我来说更奇怪的是':='只是为解析器定义的,但是':='的定义不存在。 – kohske

+0

感谢@kohske。看看这个代码,看起来':='是解析器唯一识别的“备用”令牌。 – pete

相关问题