2013-02-19 12 views
7

को हैश मैं रूबी 1.8.7 के साथ काम नहीं कर रहा था और हाल ही में मैं हैरान था कि:रूबी 1.8.7 परिवर्तित स्ट्रिंग

{:k => 30}.to_s #=> "k30" 

वहाँ ठीक उपयोग करने के लिए गहरे लाल रंग का 1.8 के लिए स्ट्रिंग के लिए हैश कन्वर्ट करने के लिए तैयार है। 7 यह की तरह लग रहे बनाने के लिए:

{:k => 30}.to_s #=> "{:k=>30}" 

उत्तर

15

hash.to_s वास्तव में 1.8.7 से 1.9.3 को बदल दिया गया है।

1.8.7 में, (संदर्भ: http://ruby-doc.org/core-1.8.7/Hash.html#method-i-to_s):

[कुंजी, मूल्य] जोड़े की एक सरणी के लिए हैश परिवर्तित करने के लिए और फिर एक स्ट्रिंग है कि सरणी परिवर्तित सरणी # में शामिल होने का उपयोग करके एक स्ट्रिंग के लिए कनवर्ट करता HSH डिफ़ॉल्ट विभाजक के साथ।

1.9.3 में, (संदर्भ: http://www.ruby-doc.org/core-1.9.3/Hash.html#method-i-to_s)

उर्फ ​​के लिए: निरीक्षण

आप 1.8.7 में बंदर-पैच हैश वर्ग निम्नलिखित के साथ स्थानीय स्तर पर भी ऐसा ही करने दे सकता है:

class Hash 
    alias :to_s :inspect 
end 
इससे पहले कि बंदर पैचिंग

:

01,235,
1.8.7 :001 > {:k => 30}.to_s 
=> "k30" 
1.8.7 :002 > {:k => 30}.inspect 
=> "{:k=>30}" 

बंदर-पैच के बाद &:

1.8.7 :003 > class Hash; alias :to_s :inspect; end 
=> nil 
1.8.7 :004 > {:k => 30}.to_s 
=> "{:k=>30}" 
संबंधित मुद्दे