de-vraag
  • 質問
  • タグ
  • ユーザー
通知:
報酬:
登録
登録すると、質問に対する返答やコメントが通知されます。
ログイン
すでにアカウントをお持ちの方は、ログインして新しい通知を確認してください。
追加された質問、回答、コメントには報酬があります。
さらに
ソース
編集
Adam S
Adam S
質問

配列内の配列へのアクセス

私は別の出力を生成する2ビットのコードを持っていますが、なぜそれを理解するのが非常に難しいですか。

コードスニペット1:

my @args = $bighash{'arguments'}{'allocations'};
print "$args[0][1]";

コードスニペット2:

my @args = $bighash{'arguments'}{'allocations'}[0];
print "$args[1]";

最初のケースでは、私が期待している値を表示しています。後者の場合、何も印刷されません。誰もこれを説明できますか?

1 2011-10-27T22:42:27+00:00 3
プログラミング
perl
Eric Strom
27日 10月 2011 в 10:53
2011-10-27T22:53:43+00:00
さらに
ソース
編集
#56793808

ハッシュに格納されている値は配列参照です。リファレンスを直接操作することができます:

my $args = $bighash{'arguments'}{'allocations'};
print $$args[1];  # or $args->[1]

または、配列を新しいものに展開することもできます:

my @args = @{ $bighash{'arguments'}{'allocations'} };
print $args[1];

詳細については、 perlref および perldsc のマニュアルページを参照してください。

2
0
Jimi WIlls
28日 10月 2011 в 12:40
2011-10-28T12:40:55+00:00
さらに
ソース
編集
#56793809

エリック・ストロムの答えは基本的に正しいです...しかし、私は誰もあなたが働いているデータ構造を調べるためにData :: Dumperを使うことを提案していないことに驚いています。あなたはあなたがしたこととエリックの訂正の違いを実際に見ることができます。これは物事をあなたのためにまっすぐにするのに役立つかも

Re:use warnings ...新しく作成された配列の存在しない要素を印刷しようとすると警告が出るはずですか?私はかつて私が厳しいと警告を使用するまでオンラインで何かを尋ねることはないと言われました。それはちょっと極端ですが、-wとData :: Dumperは間違いなく私を助けます:-)

2
0
ath88
27日 10月 2011 в 10:48
2011-10-27T22:48:10+00:00
さらに
ソース
編集
#56793807

コードスニペット2では、効果的にbighashの最初の要素([0]が最初の要素です)をとり、それを配列の唯一の要素として入れます。次に、存在しない2番目の要素を求めます。

'警告を使用する'ことを覚えている場合は、配列としてスカラーを割り当てるので、これは1を返すはずです。私はこれを自分でテストしていません。

0
0
質問の追加
カテゴリ
すべて
技術情報
文化・レクリエーション
生活・芸術
科学
プロフェッショナル
事業内容
ユーザー
すべて
新しい
人気
1
Roxana Elizabeth CASTILLO Avalos
登録済み 1週間前
2
Hideo Nakagawa
登録済み 1週間前
3
Sergiy Tytarenko
登録済み 1週間前
4
shoxrux azadov
登録済み 1週間前
5
Koreets Koreytsev
登録済み 2週間前
© de-vraag :年
ソース
stackoverflow.com
ライセンス cc by-sa 3.0 帰属