-4

cartesianの関数を使用する必要がありますList::Gen。この関数には 2 番目のパラメーターとして LIST が必要ですが、次のような配列があります。

$VAR1 = [
          [
            1,
            2,
            3
          ],
          [
            'a',
            'b',
            'c'
          ],
          [
            'x'
          ]
        ];

そのような配列をリストに「変換」して使用するにはどうすればcartesianよいですか? この場合、配列をリストコンテキストに入れてもうまくいかないようです。

4

2 に答える 2

6

括弧はリストを作成しません。優先順位を変更するだけです。

@a = ((1, 2, 3), (7, 8, 9));

と同じです

@a = (1, 2, 3, 7, 8, 9);

の例はcartesian、配列への参照のリストを示しています

cartesian { $_[0] . $_[1] } [1,2,3], [7,8,9];

したがって、それぞれが別の配列への参照である 2 つの要素を含む配列を作成する必要があるようです。

@a = ( [1,2,3], [7,8,9] );

次に、あなたの質問に答えるために@a、リスト コンテキストで評価すると、これら 2 つの参照が返されます。

cartesian { $_[0] . $_[1] } @a;
于 2013-01-13T20:11:47.180 に答える
0

あなたの新しい質問では、

$VAR1 = [
      [
        1,
        2,
        3
      ],
      [
        'a',
        'b',
        'c'
      ],
      [
        'x'
      ]
    ];

機能しないという主張にもかかわらず、必要なのはリストコンテキストで配列を評価することだけです。

cartesian { ... } @$VAR1;

例えば、

( cartesian { join '|', @_ } @$VAR1 )->say;

与える

1|a|x 1|b|x 1|c|x 2|a|x 2|b|x 2|c|x 3|a|x 3|b|x 3|c|x
于 2013-01-14T21:09:35.597 に答える