为什么Ruby`**`运算符的优先级高于一元`-`?

Bor*_*cky 3 ruby operator-precedence operator-keyword

这导致了如下情况:

-1 ** 0.5 #=> -1
Run Code Online (Sandbox Code Playgroud)

只有括号补救它:

(-1) ** 0.5 #=> 6.123031769111886e-17+1.0i
Run Code Online (Sandbox Code Playgroud)

这比预期的要差1.i,但基本上可以接受.在我向Ruby漏洞抱怨之前,我想知道是否有某种原因可以这样做?

Pla*_*ure 6

许多语言通过在数学运算顺序之后建模来定义其运算符优先级表.在数学中,取幂确实具有比乘法更高的优先级,并且一元否定毕竟乘法.

从matz 回复 "在对其进行平方时省略了数字的符号":

具有数学背景的人要求优先于**高于一元减去.这就是原因.