scalar(my ($hello, $there, $world) = (7,8)); #evaluates to 2
은 왜 오른쪽을 평가하고 2를 생산 않습니다, 대신 새로 정의 된 목록을 평가 받고 3을 되 돌리는가? $hello $there $world
($hello
7 얻는다처럼 나에게
, $there
8을 얻는다 것, 그리고 그 목록의 원소의 개수로 $world
는 3 초래 그 목록은 스칼라 문맥에서 평가 undef
를 가져옵니다). 그것은 그 문맥이 평가 된 표현의 일부가 반환되는 영향을 나에게 이상한 것 같다
my $greeting = (($hello, $there, $world) = (7,8)); #2
my @greeting = (($hello, $there, $world) = (7,8));
my $greeting_length = @greeting; #3
이 (할당 연산자 섹션의 마지막 문장)
perlop의 오른쪽에있는 요소를 계산하는 문서화
사실, 더는 : 왼쪽 목록은 스칼라 문맥에서 평가 된 것 인 경우, 값은 undef''없을 것이다. 목록이 배열이 아닙니다. – darch
@ darch, 그건 의미가 없습니다. '($ hello, $ there, $ world)'(와'(7,8)')은 스칼라 문맥에서'$ hello, $ there, $ world = = '에 실행할 수 없습니다. 목록 할당은 원하는 경우 3을 반환 할 수 있지만 이유가 없습니다. – ikegami
필자는 "then [list ($ hello, $ there, $ world)]이 스칼라 컨텍스트에서 평가됩니다."라는 문구에 정확하게 응답했습니다. 'my ($ h, $ t, $ w) = (7, 8, undef)를 평가하십시오; 스칼라 ($ h, $ t, $ w)'와 배열이 배열이 아니라는 것을 알 수 있습니다. – darch