我已经看过:=在几个代码示例中使用过,但从未附带过相应的解释.如果不知道它的正确名称,就不可能谷歌使用它.
它有什么作用?
data.table引入了:=运算符.为什么不超载< - ?
通过深入研究R源代码(文件R-3.2.2/src/main/gram.y行2836,2852)我发现R解析器/标记器认为这:=是一个LEFT_ASSIGNMENT标记.
但是当我尝试将它用作赋值运算符时R.3.2.2,
我有一个错误(无法找到:=...的函数)但是你可以看到R认为它是一个类似的赋值<-:
> myVar := 42
Erreur : impossible de trouver la fonction ":="
> :=
Erreur : unexpected assignment in ":="
> <-
Erreur : unexpected assignment in "<-"
Run Code Online (Sandbox Code Playgroud)
它是一个bug,还是:=需要从tokenizer源代码中删除令牌?
:=R中有关于运算符的过去的故事吗?
我正在尝试创建一个检查严格相等性的函数,我想使用三重等号。一些背景:
> 3 == '3'
[1] TRUE
> FALSE == 0
[1] TRUE
Run Code Online (Sandbox Code Playgroud)
上述所有检查都会返回,TRUE因为输入被强制转换为通用类型。但是我想检查严格的平等。该identical功能正是我所需要的。
> identical(3,'3')
[1] FALSE
> identical(FALSE, 0)
[1] FALSE
Run Code Online (Sandbox Code Playgroud)
现在我想以更简洁、更简洁的方式实现这一点。就像在 Javascript 中一样,我想使用三重等号。我写了这个函数:
`===` <- function(a,b){
identical(a,b)
}
Run Code Online (Sandbox Code Playgroud)
然而,这并不像预期的那样:
> 3 === 3
Error: unexpected '=' in "3 ==="
Run Code Online (Sandbox Code Playgroud)
我错过了什么?谢谢