1

このようなperl変数があります。内部プロパティ (「706」など) にアクセスするにはどうすればよいですか?

my @config = [
        {
        'x' => [ 565, 706 ],
        'y' => [ 122 ],
        'z' => 34,
        'za' => 59,
    }
];

編集: print Dumper($config[0]);利回り:$VAR1 = undef;

を使用してアクセスできるよう$config[0][0]->{x}[1];です。[0][0] を使用する必要があるのはなぜですか (1 つは明確ですが、彼は 2 番目です...)。

EDIT2: データ構造を変更して申し訳ありませんが、私に与えられた定義が変更されました。

4

2 に答える 2

4

あなたの変数は次と同等です:

my $config = [
    'x', [ 565, 706 ],
    'y', [ 122 ],
    'z', 34,
    'za', 59,
];

したがって、706 を入手したい場合は、次のようにします。

print $config->[1][1];

質問の新しいデータに従って更新されました

更新された質問を使用すると、次の方法でアクセスできます。

say $config->[0]{x}[1];

新しいデータ構造による新しい更新

あなたが提供する最後に更新されたデータ構造によると:

my @config = [
        {
        'x' => [ 565, 706 ],
        'y' => [ 122 ],
        'z' => 34,
        'za' => 59,
    }
];

ハッシュ {...} を含む匿名配列 [...] を配列 @config に割り当てると、@config の最初の要素に匿名配列が設定されます。

say Dumper \@config;

$VAR1 = [
          [
            {
              'y' => [
                       122
                     ],
              'za' => 59,
              'x' => [
                       565,
                       706
                     ],
              'z' => 34
            }
          ]
        ];
say $config[0][0]{x}[1];  #prints 706

次のいずれかを行いたいと思います。

my $config = [
        {
        'x' => [ 565, 706 ],
        'y' => [ 122 ],
        'z' => 34,
        'za' => 59,
    }
];
say $config->[0]{x}[1]; #prints 706



my @config = (
        {
        'x' => [ 565, 706 ],
        'y' => [ 122 ],
        'z' => 34,
        'za' => 59,
    }
);
say $config[0]{x}[1];  #prints 706
于 2011-01-31T13:06:46.133 に答える
3

[編集: シフト問題の定義に従います。]

与えられた:

my @config = ( 
  [
    { # NB: insertion order ≠ traversal order
        "x"  => [ 565, 706 ],
        "y"  => [ 122 ],
        "z"  => 34,
        "za" => 59,
    },
  ],
);

次に、これはそれを行います:

# choice §1
print $config[0][0]{"x"}[-1];   # get 1ˢᵗ row’s xᵗʰ row’s last element

もちろん、それは単なる構文糖衣であることを理解しています:

# choice §2
print $config[0]->[0]->{"x"}->[-1];   # get 1ˢᵗ row’s xᵗʰ row’s last element

そして、それは次の構文糖衣です。

# choice §3
print ${ $config[0] }[0]->{"x"}->[-1];   # get 1ˢᵗ row’s xᵗʰ row’s last element

これは、次の構文糖衣にすぎません。

# choice §4
print ${ ${ $config[0] }[0] }{"x"}->[-1];   # get 1ˢᵗ row’s xᵗʰ row’s last element

これもまた、次の構文シュガーです。

# choice §5
print ${ ${ ${ $config[0] }[0] }{"x"}}[-1];   # get 1ˢᵗ row’s xᵗʰ row’s last element

もちろん、これは次と同等です。

# choice §6
print ${ ${ ${ $config[0] }[0] }{"x"} }[ $#{ ${ ${ $config[0] }[0] }{"x"} } ];   # get 1ˢᵗ row’s xᵗʰ row’s last element
于 2011-01-31T12:41:56.043 に答える