простое слияние хэшей по массиву ключей и значений в ruby ​​(на примере Perl)

В 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';

7
задан geronime 16 August 2011 в 21:10
поделиться