Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有一个如下所示的 Ruby 代码,请在线试用!
loop{p$.+=1r}
还有一个,我只是将除以1r2,如下所示,在线尝试!
1r
loop{p$.+=1r/2}
据我猜测,类型转换不能与$.. 在第一种情况下,它可以正常工作,但在第二种情况下,它不会。奇怪的!
$.
那么,为什么它会这样工作呢?或者,也许我的猜测是错误的,那么实际问题是什么,以及如何解决?
通常,Integer向上转换为更复杂的数据类型,就像在这段代码中一样,它似乎工作。
Integer
它工作正常,$.变量的类型是Integer
puts $..class. # => Integer
所以右边的加法会被投射到Integer. 在第一种情况下1r被转换Integer为 value 1,所以你可以看到 value 正在变化。
1
在第二种情况下1r/2被转换为 value 的 Integer 0,因此您看不到更改,因为添加零不会更改原始值。
1r/2
0
您不能更改预定义全局变量的类型,只需尝试$. = "text"
$. = "text"