Ruby 为什么输入don';我不能正确使用$。用红宝石?

Ruby 为什么输入don';我不能正确使用$。用红宝石?,ruby,loops,casting,rational-number,predefined-variables,Ruby,Loops,Casting,Rational Number,Predefined Variables,我有一个Ruby代码,如下所示 还有一个,我只是把1r除以2,如下所示 据我所知,类型转换在使用$时无法正常工作。。在第一种情况下,它可以正常工作,但在第二种情况下,它不能正常工作。奇怪 那么,为什么会这样呢?或者,也许我的猜测是错误的,那么实际问题是什么,如何解决呢 通常,Integer是向上转换为更复杂的数据类型,它似乎可以工作。它工作正常,$。变量的类型是Integer puts $..class. # => Integer 因此加法的右侧将被转换为整数 在第一种情况下,1r被强

我有一个Ruby代码,如下所示

还有一个,我只是把
1r
除以2,如下所示

据我所知,类型转换在使用
$时无法正常工作。
。在第一种情况下,它可以正常工作,但在第二种情况下,它不能正常工作。奇怪

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



通常,
Integer
是向上转换为更复杂的数据类型,它似乎可以工作。

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

puts $..class. # => Integer
因此加法的右侧将被转换为
整数

在第一种情况下,
1r
被强制转换为值
1
整数,因此您可以看到值正在变化

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


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

您不能更改预定义全局变量的类型,只需尝试
$“文本”
x=0r;循环{px+=1/2r}
工作,试图更改$的类。可变的习惯。
loop{p$.+=1r/2}
puts $..class. # => Integer