OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

配列について

  • 暇なときにでも
  • 質問No.202826
  • 閲覧数34
  • ありがとう数1
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 29% (65/222)

$abc[5] = 20;
は、判るのですが
@abc[5] = 20;
は、判りません
お願いします。
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.2
レベル11

ベストアンサー率 61% (157/255)

スカラーコンテキストと、リストコンテキストの違いであり、
配列の要素と、配列のスライスの違いでもあります。

とにかく、Perlを学びたければ、「コンテキスト」を極めること。
「コンテキスト」がわからなければ、エレガントな記述は不可能です。

1)$abc[5] = 20;
まず、コンテキストをみます。
$abc[5]
~~~~~~~
これはスカラーコンテキストを持ちます。 $がついているのはそのためです。
それだけではなく、
$abc[5]
   ~~
ここの[ ] の中もスカラーコンテキストを持ちます。

※重要項目
「スカラーコンテキスト中では、値が1つだけ採用される。
 スカラーコンテキスト中に、リストを投げ込んだ場合、リストの最期の値が
 採用される」

$abc[5,1,3]=(20,10,5);

すなわち、上の記述は一応OKです。しかし、実際には、
$abc[ 3]=( 5);

と等価となります。

以上が、「配列の要素」です。


2)@abc[5] = 20;
まず、コンテキストをみます。

@abc[5]
~~~~~~~
これはリストコンテキストを持ちます。 @がついているのはそのためです。
それだけではなく、
@abc[5]
   ~~
ここの[ ] の中もリストコンテキストを持ちます。
※重要項目
「リストコンテキスト中では、値が複数採用され得る。
 (一般的には0個以上であるが、配列のスライスの中などでは1つ以上必要)
 リストコンテキスト中に、1つの値をなげこんだ場合は、要素が1つだけのリストと見なされる」

@abc[5,1,3]=(20,10,5);

すなわち、上の記述は以下と同様です。
$abc[5]=20;
$abc[1]=10;
$abc[3]=5;


上のことより、[]の中のスライスがひとつの場合、
@abc[5] = 20;

すなわち、上の記述は以下と同様です。
$abc[5] = 20;



以上、$abc[5]=20; と @abc[5]=20; は仕組みとしては上述のように
違いますが、結果としては同じになります。


以上、Perl/CGI 学習の参考にしてください。
-PR-
-PR-

その他の回答 (全1件)

  • 回答No.1
レベル6

ベストアンサー率 16% (1/6)

スカラー変数が変数名の前に「$」をつけて表すのに対し、配列変数では変数名の前に「@(アットマーク)」をつけて表します。 例) @a = (1,2,3); @b = (@a,4,5); @c = @b; @d = 1; @d = (@d,2,3); ($a,$b) = ($b,$a); ($e,@c) = @c; ($a,$b,$c) = @c; ($a,$b,$c) = (1); ...続きを読む
スカラー変数が変数名の前に「$」をつけて表すのに対し、配列変数では変数名の前に「@(アットマーク)」をつけて表します。

例)
@a = (1,2,3);
@b = (@a,4,5);
@c = @b;
@d = 1;
@d = (@d,2,3);
($a,$b) = ($b,$a);
($e,@c) = @c;
($a,$b,$c) = @c;
($a,$b,$c) = (1);


意味)
@aに(1,2,3)がセットされる
@bに(1,2,3,4,5)がセットされる
@cに@bを複写する
@dに(1)がセットされる
@dの末尾に2と3を追加する
$aと$bを入れ替える
@cの1つめの要素(この場合は「1」)を
取り除いて、$eにセットする。
@c==(1,2,3,4,5)だが、左辺には3つ分の
変数しかないので、初めから3つ分の要素を
左辺の変数にそれぞれ代入して、残りの2つ
の要素は捨てられる。
($a==1,$b==2,$c==3となる)
左辺の変数の方が多い場合、余った変数には
undef値が代入される。
($a==1,$b==undef,$c==undefとなる)


このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ