這是一個簡單的問題。我有下面的ruby代碼,它工作正常。使用string.insert時不能修改凍結的字符串
def add_zeros number, zeros
number = number.to_s
zeros_to_add = zeros - number.length
zeros_to_add.times do
number = "0#{number}"
end
number
end
但是如果我更換
number = "0#{number}"
隨着
number.insert(0, "0")
然後我得到的類型錯誤:不能修改凍結字符串,沒有人知道這是爲什麼?
您正在使用什麼版本的Ruby的?我無法在OSX的1.8.6,1.8.7或1.9.2中重現該錯誤。這對我來說可以。另一種解決方法是:是否有其他可能影響'number'狀態的代碼? – Telemachus 2010-06-14 01:17:24
感謝您的回覆,我在mac os上使用ruby 1.8.7,當我在測試中使用ruby 1.8.7時會出現此錯誤 def test_zeros {「43544」=>「43544」,「344」=>「00344」, 5 =>「00005」,100 =>「00100」} each_pair do | input,expected | 串= @ bs.add_zeros(輸入,5) assert_equal(string.class,字符串) assert_equal(字符串,預期的, 「應該是#{預期}但是爲#{串}」) 端 端 其中我把它從經營一類內與@bs實例 歡呼 理查德 – Richard 2010-06-14 05:48:26