Я не работал с ruby 1.8.7 и недавно был удивлен, что:
{:k => 30}.to_s #=> "k30"
Есть ли готовое исправление для преобразования хэша в строку для ruby 1.8.7, чтобы оно выглядело так:
{:k => 30}.to_s #=> "{:k=>30}"
Я не работал с ruby 1.8.7 и недавно был удивлен, что:
{:k => 30}.to_s #=> "k30"
Есть ли готовое исправление для преобразования хэша в строку для ruby 1.8.7, чтобы оно выглядело так:
{:k => 30}.to_s #=> "{:k=>30}"
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 в строку путем преобразования хэша в массив пар [ключ, значение] и последующего преобразования этого массива в строку с помощью Array#join с разделителем по умолчанию.
В 1.9.3
(ссылка: http://www.ruby-doc.org/core-1.9.3/Hash.html#method-i-to_s)
Псевдоним для: проверить
Вы можете изменить класс Hash в 1.8.7, чтобы сделать то же самое локально со следующим:
class Hash
alias :to_s :inspect
end
Перед исправлением обезьяны:
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}"
inspect
.
- person Faizaan Gagan; 13.08.2019