问题描述
我有一个如下所示的 Ruby 代码,Try it online!
loop{p$.+=1r}
和另一个,其中我只是将 1r
除以 2,如下所示,Try it online!
loop{p$.+=1r/2}
据我所知,类型转换在 $.
中不能正常工作。在第一种情况下,它可以正常工作,但在第二种情况下,它没有。 奇怪!
那么,为什么会这样呢?或者,也许我的猜测是错误的,那么实际问题是什么,如何解决?
通常,Integer
被向上转换为更复杂的数据类型,like in this code,它似乎有效。
解决方法
它工作正常,$.
变量的类型是 Integer
puts $..class. # => Integer
因此添加的右侧将被强制转换为 Integer
。
在第一种情况下,1r
被转换为值 Integer
的 1
,因此您可以看到值正在发生变化。
在第二种情况下,1r/2
被转换为值 0
的整数,因此您看不到变化,因为添加零不会改变原始值。
你不能改变预定义全局变量的类型,试试$. = "text"