Ruby 为什么没有破坏性的“to_s”呢?

Ruby 为什么没有破坏性的“to_s”呢?,ruby,string,Ruby,String,让我们说: n = 5 n.to_s p n n的结果仍然是5,而不是“5”。用新转换的n替换原始变量n的最短方法是什么,无需执行以下操作: n = 5 a = n.to_s p a 为什么Ruby不允许我调用_s在对象上 整数不能神奇地将自己变成字符串。方法(包括!方法)只能更改对象值,而不能更改类型。此外,整数是不可变的——整数本身不能修改(但指向它的名称可以重新指向新的整数) 因此,to_s不存在,您需要通过编写例如 n = n.to_s 据我所知,最短的是n=n.to_s或n=“{

让我们说:

n = 5
n.to_s
p n
n
的结果仍然是
5
,而不是
“5”
。用新转换的
n
替换原始变量
n
的最短方法是什么,无需执行以下操作:

n = 5
a = n.to_s
p a

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

整数不能神奇地将自己变成字符串。方法(包括
方法)只能更改对象值,而不能更改类型。此外,整数是不可变的——整数本身不能修改(但指向它的名称可以重新指向新的整数)

因此,
to_s
不存在,您需要通过编写例如

n = n.to_s

据我所知,最短的是
n=n.to_s
n=“{n}”
,但两者都需要将字符串赋值回变量。您的意图是正确的,但有关
的描述不正确<代码>不一定意味着破坏性方法。不过这是OP的错误。@sawa:稍微改写一下,更好吗?