2

配列の各要素がキーであり、その後に空の値が続くように、配列をハッシュにコピーしようとしています。

my %questions = map { @u_list => $_ } @u_list;

これだけでプリントアウト

=>

私はperldocでこのイディオムを見ます:

     %hash = map { get_a_key_for($_) => $_ } @array;

しかし、キーの設定方法がわかりません。キーを配列内の各要素にしたい。

4

5 に答える 5

10

非常に紛らわしいが機能的な答え:

@questions{@u_list}=();

これは、ハッシュ スライス構文を使用して一連のハッシュ キーを指定しています。

于 2013-06-28T21:13:41.320 に答える
8
my %questions = map { $_ => undef } @u_list;

マップでは、の各要素が@u_list$_ に設定されます。

于 2013-06-28T21:14:50.310 に答える
2

$_ is the current element of your list @u_list.

So you have to say

my %questions = map { $_ => 1 } @u_list;

to map your list elements as hash keys.

于 2013-06-28T21:20:55.693 に答える
1

参考までに、これを行ういくつかの異なる方法を次に示します。

使用するmap

my %questions = map { $_, undef } @u_list;

を使ってforeach

my %questions;
$questions{$_} = undef foreach ( @u_list );

を使用しhash sliceます。

my %questions;
@questions{@u_list} = (undef) x @u_list;
于 2013-06-29T13:36:59.087 に答える