ruby如何将2/3/4解析为2÷3÷4?

Eli*_*off 4 ruby parsing

很多ruby的语法和解析都是相对合乎逻辑的,但是我很困惑ruby如何从上下文知道2 /3/ 42÷3÷4而不是解析/3/为正则表达式?这是一个正确的解析,但/3/也是一个有效的正则表达式,它怎么会知道这/3/不是一个正则表达式.

我认为这可能是一个数字文字的东西,但如果你这样做

a = 6
b = 4
c = 2

a /b/ c
Run Code Online (Sandbox Code Playgroud)

Ruby仍然将其解析为分裂.这是如何运作的?

实际上,我意识到这个问题还有更多,

让我说我有这个

def a(x)
  x
end

a = 4
b = 2
i = 4

a /b/i #=> 0
Run Code Online (Sandbox Code Playgroud)

如何a /b/i解析的0,而不是/b/i 在为什么a /b/i为得到解析a./(b./(i)),而不是a(/b/i)

eva*_*man 5

在Ruby(和其他一些语言)中,运算符实际上是表达式中对象的方法.因此,Ruby将您的表达视为:

(a./(b))./(c)
Run Code Online (Sandbox Code Playgroud)

当你使用正则表达式时,没有主要对象,所以Ruby可以弄清楚你想要一个正则表达式而不是除法.

这是一篇很好的文章,了解更多信息.