В Perl, чтобы выполнить обновление хеша на основе массивов ключей и значений, я могу сделать что-то вроде:
@hash{'key1','key2','key3'} = ('val1','val2','val3');
В Ruby я мог бы сделать нечто подобное более сложным способом:
hash.merge!(Hash[ *[['key1','key2','key3'],['val1','val2','val3']].transpose ])
ОК, но я сомневаюсь в эффективности такой процедуры.
Теперь я хотел бы выполнить более сложное назначение в одной строке.
Пример Perl:
(@hash{'key1','key2','key3'}, $key4) = &some_function();
Понятия не имею, возможна ли такая вещь каким-то простым рубиновым способом.Любые подсказки?
Для Perl с ограниченными возможностями, @hash{'key1','key2','key3'} = ('a', 'b', 'c')
является срезом хеша и является сокращением для чего-то вроде этого:
$hash{'key1'} = 'a';
$hash{'key2'} = 'b';
$hash{'key3'} = 'c';