2013-02-19 27 views
7

tôi đã không làm việc với ruby ​​1.8.7 và gần đây tôi đã rất ngạc nhiên rằng:của Ruby 1.8.7 chuyển đổi băm để chuỗi

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

Có sẵn sàng sử dụng sửa chữa để chuyển đổi băm để chuỗi cho ruby ​​1.8. 7 để làm cho nó trông giống như:

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

Trả lời

15

hash.to_s đã thực sự được thay đổi 1.8.7-1.9.3.

Trong 1.8.7, (ref: http://ruby-doc.org/core-1.8.7/Hash.html#method-i-to_s):

Chuyển đổi HSH thành một chuỗi bằng cách chuyển đổi băm để một mảng của [chính trị,] cặp và sau đó chuyển đổi mảng thành một chuỗi sử dụng mảng # tham gia với dấu phân cách mặc định.

Trong 1.9.3, (ref: http://www.ruby-doc.org/core-1.9.3/Hash.html#method-i-to_s)

Khác cụm từ: kiểm tra

Bạn có thể khỉ vá lớp Hash trong 1.8.7 để làm điều tương tự tại địa phương như sau:

class Hash 
    alias :to_s :inspect 
end 

Trước khi vá khỉ:

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

Khỉ-vá & sau:

1.8.7 :003 > class Hash; alias :to_s :inspect; end 
=> nil 
1.8.7 :004 > {:k => 30}.to_s 
=> "{:k=>30}" 
Các vấn đề liên quan