为什么没有`to_s`的破坏性版本?

时间:2013-08-27 05:08:25

标签: ruby string

让我们说:

n = 5
n.to_s
p n

n的结果仍为5而不是"5"。使用我新转换的n替换原始变量n的最短方法是什么,而不必执行以下操作:

n = 5
a = n.to_s
p a

为什么Ruby不允许我在对象上调用to_s!

1 个答案:

答案 0 :(得分:8)

整数不能神奇地将自己变成一个String。方法(包括!方法)只能导致对象值更改,而不是类型。此外,整数是不可变的 - 整数本身不能被修改(但指向它的名称可以重新指向一个新的整数)。

因此,to_s!不存在,而是需要通过编写例如重新绑定变量。

n = n.to_s