Ruby如何使用雙引號初始化新字符串(""
)與String.new
有什麼區別?出於好奇和實驗的目的,我推翻String#initialize
:Ruby如何評估雙引號(又名「」)與String.new?
class String
def initialize
puts "I <3 bananas" # they're delicious!
end
end
我試圖弄清楚的是:爲什麼是這兩個例子有什麼不同?
# Calling the String class directly, I can declare banana love!
irb(main):054:0> String.new
I <3 bananas
=> ""
# Using double quotes, this string is not as tasty :(
irb(main):055:0> ""
=> ""
這是惱人的研究,因爲每一個谷歌的結果似乎是專注於基本的Ruby語法,我一直沒能找到Ruby文檔中的任何東西。
如果您改寫'allocate',會發生什麼? – 2013-04-22 03:51:01
@RyanBigg這是一個很好的想法,但它沒有什麼區別。評估字符串文字並在編譯時創建它們的對象,繞過'initialize'和'allocate'。 – 2013-04-22 04:18:32
@Darshan計算,謝謝!這聽起來像我不得不破解並重新編譯源代碼中的Ruby,以便返回初始化的東西。我會閱讀更多的文字。 – amorphid 2013-04-22 05:22:37