【新機能】作り忘れたまとめはありませんか?31日前まで期間指定してまとめが作れる高度な検索ができました。有料APIだからツイートの漏れはありません!

リストと配列(Array)はPerlでは別物

違いについて教えてもらった。ありがとうございます。
perl
13764view 1コメント
10
ログインして広告を非表示にする
ひさいち @hisaichi5518 2012-02-25 15:55:26
リストと配列一緒だと思ってた。 #Perl入学式
柴崎優季 @shiba_yu36 2012-02-25 15:57:20
@hisaichi5518 今も一緒だと思ってるでした
柴崎優季 @shiba_yu36 2012-02-25 15:59:29
@hisaichi5518 でもどうなんだろう。Perlで配列って言葉聞かない気がする。リストコンテキストって言葉があるからかな
songmu @songmu 2012-02-25 20:36:33
@hisaichi5518 @shiba_yu36 リストと配列(Array)はPerlでは別物だよ。リストはlisp由来。値の返し方のコンテキストがスカラとリストがある。ハッシュだって、値を返させるとリストを返すでしょう。
songmu @songmu 2012-02-25 20:39:13
@hisaichi5518 @shiba_yu36 my %hash;$hash{qw/1 2 3/} = 'hoge';say $hash{qw/1 2 3/};say Dumper \%hash; とかやると驚きの結果が。
songmu @songmu 2012-02-25 20:41:39
@hisaichi5518 @shiba_yu36 my $var = scalar (2,4,6,8);say $var; とかでも驚きの結果が。(4じゃないよ)
トーカナイザの守護霊 @mackee_w 2012-02-25 20:43:39
本気で「えっ」って言ってしまった RT @songmu: @hisaichi5518 @shiba_yu36 my $var = scalar (2,4,6,8);say $var; とかでも驚きの結果が。(4じゃないよ)
柴崎優季 @shiba_yu36 2012-02-26 00:56:07
さーて俺もさっきのやってみるかー
柴崎優季 @shiba_yu36 2012-02-26 01:02:54
ちょっとこれどういうことなのか分かんないんですけど...
柴崎優季 @shiba_yu36 2012-02-26 01:04:28
@hisaichi5518 これなんでこうなるか分かる?
ひさいち @hisaichi5518 2012-02-26 01:05:12
@shiba_yu36 わかんない。一発目のやつはSyntax Errorになると思ってた。
柴崎優季 @shiba_yu36 2012-02-26 01:06:35
@hisaichi5518 そうだねー。配列とハッシュはリストを使って実装されていて、配列をスカラーコンテキストで評価すると配列数になるだけで、リストをスカラーコンテキストで評価すると違う結果になるということなのかな...
ひさいち @hisaichi5518 2012-02-26 01:07:06
@shiba_yu36 多分そう!!!!!!ってなりました。
ひさいち @hisaichi5518 2012-02-26 01:13:17
$hash{qw/1 2 3/};がなんで動くのかわからなくてうける。
トーカナイザの守護霊 @mackee_w 2012-02-26 01:14:34
@hisaichi5518 リスト自体がキーになっているらしいです。JSとかでイベント名にオブジェクトを突っ込めるみたいなもんです
songmu @songmu 2012-02-25 21:08:51
スカラコンテキストで要素数返すってのは、配列の特徴であってリストの特徴ではないってことですね。my $var = %hash;とかやるとまた奇妙な結果になるし。
songmu @songmu 2012-02-25 22:21:23
$hash{qw/hoge fuga/}だとリストをキーにした値の取り出しで、@hash{qw/hoge fuga/}だと、ハッシュスライスでキーがhogeとfugaの要素を列挙する。
outerinside (佐藤) @outerinside 2012-02-26 01:33:31
@hisaichi5518 「リスト自体がキー」というのは正確ではないです。リストを渡すと特殊変数 $; をセパレータにして join した結果がキーになります。つまり $hash{qw/foo bar/} は $hash{join($;, qw/foo bar/)} と等価
outerinside (佐藤) @outerinside 2012-02-26 01:34:01
案外 $; の挙動は知られていない
ひさいち @hisaichi5518 2012-02-26 01:34:56
すっきり出来た感じする。
songmu @songmu 2012-02-26 01:35:57
$; については書いてたのに、ひさいちくん読んでくれてなかった…
songmu @songmu 2012-02-26 01:32:52
$hash{1,2}は 多次元配列のエミュレートとか言うらしい。awk由来でリファレンスが無かった頃のバッドノウハウ的な感じですな。 perldoc perldsc にその辺のことが書いてある。
songmu @songmu 2012-02-26 01:24:46
@shiba_yu36 @hisaichi5518 コンテキスト(値の返し方)にスカラとリストがあって、変数の型としてスカラ・配列・ハッシュ等があるってことですよ。混同してはいけない。
残りを読む(4)

カテゴリーからまとめを探す

「プログラミング」に関連するカテゴリー

ログインして広告を非表示にする
ログインして広告を非表示にする