Size: a a a

2020 May 04

В

Владимир in RubyRush
Добрый вечер! Подскажите пожалуйста, я правильно понимаю, что сделать копию json-структуры при помощи метода clone не получиться?
источник

В

Владимир in RubyRush
т.е. {k => v}.clone создаст копию хеша, а вот {k => {k1 => v1}}.clone - уже копирует данные не правильно. Это нормальное поведение? На stackoverflow что-то писали о проблеме "глубокого копирования". Это про описанную мной ситуацию? Спасибо!
источник

E

Eugene in RubyRush
Владимир
т.е. {k => v}.clone создаст копию хеша, а вот {k => {k1 => v1}}.clone - уже копирует данные не правильно. Это нормальное поведение? На stackoverflow что-то писали о проблеме "глубокого копирования". Это про описанную мной ситуацию? Спасибо!
всё верно

в Rails есть метод deep_dup
источник

В

Владимир in RubyRush
Eugene
всё верно

в Rails есть метод deep_dup
Благодарю за ответ!
источник

E

Eugene in RubyRush
Забавно, что ключи у хеша при клонировании копируются "по значению", а не "по ссылке":

2.6.3 :001 > s = "a"
=> "a"
2.6.3 :002 > h = {s => "b"}
=> {"a"=>"b"}
2.6.3 :003 > h2 = h.clone
=> {"a"=>"b"}
2.6.3 :004 > s << "1"
=> "a1"
2.6.3 :005 > h
=> {"a"=>"b"}
2.6.3 :006 > h2
=> {"a"=>"b"}
источник

E

Eugene in RubyRush
А не, это какой-то специальный фикс для строк:

2.6.3 :001 > class A
2.6.3 :002?>   attr_accessor :x
2.6.3 :003?>   def initialize(x)
2.6.3 :004?>     @x = x
2.6.3 :005?>     end
2.6.3 :006?>   end
=> :initialize
2.6.3 :007 > a = A.new(5)
=> #<A:0x00007fffe5b870a8 @x=5>
2.6.3 :008 > h = {a => "b"}
=> {#<A:0x00007fffe5b870a8 @x=5>=>"b"}
2.6.3 :009 > h2 = h.clone
=> {#<A:0x00007fffe5b870a8 @x=5>=>"b"}
2.6.3 :010 > a.x = 6
=> 6
2.6.3 :011 > h
=> {#<A:0x00007fffe5b870a8 @x=6>=>"b"}
2.6.3 :012 > h2
=> {#<A:0x00007fffe5b870a8 @x=6>=>"b"}
источник

AV

Alexander Vladimirov in RubyRush
"/\r-\r\\\r|\r"?
источник

А

Алексей in RubyRush
Что 'как'? Не понял вопроса
источник

А

Алексей in RubyRush
А, как задачу сделать?
источник

AV

Alexander Vladimirov in RubyRush
Алексей
А, как задачу сделать?
Я думаю да)
источник

А

Алексей in RubyRush
Ну тогда подсказка выше уже написана)
источник

А

Алексей in RubyRush
sleep ещё вкорячить и готово)
источник

G

Grek in RubyRush
Алексей
Ну тогда подсказка выше уже написана)
В таком случае можете написать полный код, будьте добры
источник

G

Grek in RubyRush
Alexander Vladimirov
"/\r-\r\\\r|\r"?
Благодарю, но я не понял куда это вставить
источник

G

Grek in RubyRush
100.times do |i|
 print "\r#{i}"
 sleep 1
end
 

например в такой код
источник

G

Grek in RubyRush
или loop do
источник

А

Алексей in RubyRush
Да, только за один проход цикла надо выполнить несколько принтов и слипов по одному для каждого символа
источник

G

Grek in RubyRush
loop do
 print "/\r-\r\\\r|\r"
end
источник

V

Valery in RubyRush
Eugene
А не, это какой-то специальный фикс для строк:

2.6.3 :001 > class A
2.6.3 :002?>   attr_accessor :x
2.6.3 :003?>   def initialize(x)
2.6.3 :004?>     @x = x
2.6.3 :005?>     end
2.6.3 :006?>   end
=> :initialize
2.6.3 :007 > a = A.new(5)
=> #<A:0x00007fffe5b870a8 @x=5>
2.6.3 :008 > h = {a => "b"}
=> {#<A:0x00007fffe5b870a8 @x=5>=>"b"}
2.6.3 :009 > h2 = h.clone
=> {#<A:0x00007fffe5b870a8 @x=5>=>"b"}
2.6.3 :010 > a.x = 6
=> 6
2.6.3 :011 > h
=> {#<A:0x00007fffe5b870a8 @x=6>=>"b"}
2.6.3 :012 > h2
=> {#<A:0x00007fffe5b870a8 @x=6>=>"b"}
Является ли хорошей практикой мутация ключей хеша?
Нужно ли после операции мутации ключа хеша "перехешировать" хэш?
источник

G

Grek in RubyRush
выводит ноо
источник