2013-08-27 20 views
2

比方說:爲什麼沒有`to_s`的破壞性版本?

n = 5 
n.to_s 
p n 

n結果還是5而非"5"。什麼是與代替原來的變量n最短的路我的新轉換n而不必通過如下:

n = 5 
a = n.to_s 
p a 

爲什麼不紅寶石允許我這樣稱呼的對象to_s!

+0

我知道的最短的是'n = n.to_s'或'n =「#{n}」,但都需要將字符串賦值給變量。 –

回答

8

一個整數不能神奇地將自己變成一個字符串。方法(包括!方法)只能導致對象值改變,而不是類型。此外,整數是不可變的 - 整數本身不能修改(但指向它的名稱可以重新指向一個新的整數)。

因此,to_s!不存在,而是需要通過寫入例如重新綁定變量。

n = n.to_s 
+1

您的意圖是正確的,但有關'!'的描述不正確。 '!'不一定意味着破壞性的方法。儘管如此,這是OP的錯誤。 – sawa

+1

@sawa:稍微改了一下,好點? – nneonneo

+0

它看起來更好。 – sawa

相關問題