Syntax 电话及;(x,y)位运算符
经过调查,我有以下问题 谁能解释一下为什么Syntax 电话及;(x,y)位运算符,syntax,julia,Syntax,Julia,经过调查,我有以下问题 谁能解释一下为什么Base.:&(1,2)有效,但&(1,2)失败了? 同时Base.:|(1,2)和|(1,2)两者都起作用。原因很简单,因为&作为一元运算符是一种特殊形式,因为它在ccall语法中使用(尽管如此)。因此&(1,2)被解析为Expr(:&,:(1,2)) |不是一元运算符,因此|(1,2)被解析为1 | 2,一个函数调用 +和-具有特殊的大小写解析规则,因此+(1,2)和-(1,2)可以解析为两个参数函数调用(否则它们将是元组上的一个参数函数调用,这将
Base.:&(1,2)
有效,但&(1,2)
失败了?
同时
Base.:|(1,2)
和|(1,2)
两者都起作用。原因很简单,因为&
作为一元运算符是一种特殊形式,因为它在ccall
语法中使用(尽管如此)。因此&(1,2)
被解析为Expr(:&,:(1,2))
不是一元运算符,因此|
被解析为|(1,2)
,一个函数调用1 | 2
和+
具有特殊的大小写解析规则,因此-
和+(1,2)
可以解析为两个参数函数调用(否则它们将是元组上的一个参数函数调用,这将在运行时出错)<代码>&不受这些规则的约束,因为它是一种特殊形式,而不是普通的运算符-(1,2)
根本不被解析为运算符,而只是对标识符的普通字段引用。所以这里没有歧义,它像普通函数调用一样被解析。类似地,Base.:&
被解析为普通函数调用,因为(&)(1,2)
被解析为普通标识符李>(&)