如何理解Ruby计算中的对象、方法和参数



在学习Ruby gotchas时,我在IRB:中的一些计算得到了不同的结果

1-2-7-2 # => -10
1.-2.-7.-2 # => 4
1.-2.-7.-2.-4 # => 8
1.-2.-7.-2.+4 # => 0
1.-(2).-(7).-(2) # => -10

可能与方法和论点有关?我正努力想办法解决这个问题。

您选择了一种有趣的计算方法。

我猜你试图在表达式1.-2.-7.-2中省略零,如果你把它写成1.0 - 2.0 - 7.0 - 2,它将返回-10

获得4的方式是因为1.-构造调用-()方法,因为Ruby中的所有东西都是对象,然后将参数传递给函数。

在您的情况下,它将被解析为

1.-( 2.-( 7.-(2) ) )
# if we try to unwrap
a = 7.-(2) # => 5
b = 2.-(a) # => -3
1.-(-3) # (or 1 + 3) => 4

最新更新