在Perl中,要根据键和值的数组执行哈希更新,可以像这样做:
在Ruby中,我可以以更复杂的方式做类似的事情:
$hash{$_} = shift @values for @keys;
@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{'key1'} = 'a';
$hash{'key2'} = 'b';
$hash{'key3'} = 'c';
hash{'key1','key2','key3'}
是错误的语法。因此你不能这样做。 - fl00r@hash{'key1','key2','key3'} = (1, 2, 3);
在 Perl 中是完全正确的。 - geronime