我剛開始紅寶石昨天學習,在Codeacademy「串不能強迫Fixnum對象」,同時在使用過程中的數據結構的一部分,我試過如下:紅寶石:打印哈希對時
my_hash = {1=>2,3=>4,"5"=>"6"}
my_hash[7] = my_hash[1]+my_hash[3]
my_hash.each { |k,v|
# Here I want to print key and values like "Key: Value"
}
在第4行,
這工作:
puts "#{k}: #{v}"
這不:
puts k+": "+v
我得到String can't be coerced into Fixnum
。 爲什麼?我只是打印字典鍵和值。我不會在其他任何東西中進行類型轉換。有什麼問題?
因爲你的第一個散列的k,v是1 => 2,意味着k,v class是一個Fixnum,所以不能加上「:」這是一個字符串,ruby不接受這個。 我認爲使用'「#{k}:#{v}」是最好的解決方案,或者您可以使用'k.to_s +「:」+ v.to_s'來代替。 –
是啊!我只是做了===>'puts k.to_s +「:」+ v.to_s' 我猜在Ruby中,'+'並不意味着串聯,如果在打印語句中使用了一個數字。 –
沒錯!還有一件事:'to_s'是'Class'類的方法,所以每個變量都有這個函數,甚至是'nil',所以隨意使用它。 –