スカラコンテキストでリストの割り当てが右側の要素の数を返す:リスト割り当て
scalar(my ($hello, $there, $world) = (7,8)); #evaluates to 2
なぜそれが右側を評価し、2を生成する代わりに、新たに定義されたリストのん評価され、3を返す?私に
、$hello
は7を得るようにそれはそう、$there
それは、リスト内の要素の数であるとして、3になると思われる、そのリストがスカラコンテキストで評価され、8を取得し、$world
はundef
を取得($hello $there $world
)。そのコンテキストが評価された式の一部が返される影響私には奇妙なようだ:
my $greeting = (($hello, $there, $world) = (7,8)); #2
my @greeting = (($hello, $there, $world) = (7,8));
my $greeting_length = @greeting; #3
実際には、左のリストがスカラーコンテキストで評価されたものだった場合、値は 'undef'になります。リストは配列ではありません。 – darch
@ darch、それは意味をなさない。 '($ hello、$ there、$ world)=(7,8)'では、($ hello、$ there、$ world) '(および'(7,8) ')はスカラーコンテキストでは実行できません。リストの割り当ては、望むなら3を返しますが、理由はありません。 – ikegami
私は「[list($ hello、$ there、$ world)]がスカラーコンテキストで評価される」というフレーズに正確に反応していました。 'my($ h、$ t、$ w)=(7、8、undef)を評価する。スカラー($ h、$ t、$ w) 'となり、リストは配列ではないことがわかります。 – darch