如果我x**2.to_s在irb中,x是一个整数,我收到错误信息:
TypeError:String无法强制转换为Fixnum
我猜这是因为代码被解释为x**(2.to_s).但是当我搜索一个Ruby运算符优先级的表时,我首先获得了数组访问权,其中指数为第二个.点运算符无处可寻(如果它可以被认为是一个).我是否对此解释更正,如果是,那么这种行为的定义是什么?
如果x是整数,则x**2.to_s是x.**(2.to_s).因为Fixnum#**方法存在.在你的情况下**是一个方法,而不是一个运算符.
在这种情况下,不存在运算符优先级和关联性.
在表达中 - x.**(2.to_s)
x是Fixnum对象.
**是一种叫做的方法x.
2.to_s只是一个表达式,它将首先被计算,并作为参数传递给方法**.
我的答案就是你的例子.但Ruby中有几个边缘情况.只是为了得到那些的味道,给一些时间来阅读这个线程为什么不a + f b解析?.