1

我有一个如下所示的 Ruby 代码,请在线试用!

loop{p$.+=1r}

还有一个,我只是将除以1r2,如下所示,在线尝试!

loop{p$.+=1r/2}

据我猜测,类型转换不能与$.. 在第一种情况下,它可以正常工作,但在第二种情况下,它不会。奇怪的!

那么,为什么它会这样工作呢?或者,也许我的猜测是错误的,那么实际问题是什么,以及如何解决?


通常,Integer向上转换为更复杂的数据类型,就像在这段代码中一样,它似乎工作。

4

1 回答 1

1

它工作正常,$.变量的类型是Integer

puts $..class. # => Integer

所以右边的加法会被投射到Integer.
在第一种情况下1r被转换Integer为 value 1,所以你可以看到 value 正在变化。

在第二种情况下1r/2被转换为 value 的 Integer 0,因此您看不到更改,因为添加零不会更改原始值。

您不能更改预定义全局变量的类型,只需尝试$. = "text"

于 2021-01-02T18:02:19.310 回答