В 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();
Я понятия не имею, есть ли такая вещь возможно каким-то простым способом Ruby. Есть какие-нибудь подсказки?
Для нарушенного Perl, @hash {'key1', 'key2', 'key3'} = ('a', 'b', 'c')
- это ] hash slice и является сокращением для чего-то вроде этого:
$hash{'key1'} = 'a';
$hash{'key2'} = 'b';
$hash{'key3'} = 'c';