提问人:Silvio Mayolo 提问时间:10/27/2023 更新时间:10/27/2023 访问量:38
这个 Ruby 错别字解析是什么?
What is this Ruby typo parsing as?
问:
Ruby 有一个简洁的安全导航操作员。如果我写 ,那么它返回 ,除非碰巧是 ,在这种情况下,它只是短路并返回 。foo&.bar
foo.bar
foo
nil
nil
现在,作为一个匆忙的程序员,我不小心输入了点和与号。我本来以为会出现解析错误,但我实际上得到了foo.&bar
3.1.0 :002 > foo.&bar
(irb):2:in `<main>': undefined local variable or method `bar' for main:Object (NameError)
事实上,如果我定义一个名为 的局部变量,它似乎很好。bar
3.1.0 :003 > bar = 42
=> 42
3.1.0 :004 > foo.&bar
=> 42
在这种情况下,解析是什么?.&
答:
3赞
Silvio Mayolo
10/27/2023
#1
Ruby 中缀运算符可以用显式点调用,因此以下两个是等效的。
a + b
a.+(b)
单 & 运算符也是如此,通常定义为执行“按位和”运算。Ruby 允许我们在参数列表中省略括号,除非运算符顺序需要它们。所以是真的,或者不那么模棱两可,这等价于对 的显式调用,无论类型是什么。foo.&bar
foo.& bar
foo.&(bar)
foo & bar
def &
foo
评论
foo
foo.&bar
bar
foo = 33
foo.&bar
pp RubyVM::AbstractSyntaxTree.parse("foo.&bar")
CALL
:&