5

これが答えとして4を返す方法がわかりません。サブルーチン内で何が起こっているのかわかりません。



sub bar {@a = qw (10 7 6 8);}
my $a = bar(); 
print $a; 

# outputs 4

4

3 に答える 3

12

サブルーチンは、スカラー コンテキストで呼び出されます。サブルーチンの最後のステートメントは への代入@aです。これは式であるため、暗黙の戻り値になります。スカラー コンテキストでは、 this は代入の右辺によって返される要素の数に評価されます (たまたま の要素の数と同じです@a)。

于 2013-08-12T18:19:56.930 に答える
3

returnPerl では、サブルーチンの戻り値は、ステートメントが指定されていない場合に評価される最後の式です。

perlsubドキュメントから:

return が見つからず、最後のステートメントが式の場合は、その値が返されます。最後のステートメントが foreach や while などのループ制御構造である場合、返される値は規定されていません。空のサブルーチンは空のリストを返します。

于 2013-08-12T18:22:12.870 に答える