リストを返す関数をスカラコンテキストで評価
投稿:2019-02-26
いきなり陳謝。
この自分のツイートは大間違い。
ああもう恥ずかしい(*^艸^)
ということはあれだ、自分のコードではリストを返したつもりで配列返してたのかorz
ということはあれだ、自分のコードではリストを返したつもりで配列返してたのかorz
#!/usr/bin/env perl -w use utf8; use strict; use warnings; use Encode::Locale; use Encode::Argv; use feature "say"; binmode STDIN, ":encoding(console_in)"; binmode STDOUT, ":encoding(console_out)"; $| = 1; say "配列を返す場合"; my @l = return_array(); say "リストコンテキスト:@l"; my $s = return_array(); say "スカラコンテキスト:$s"; say "リストを返す場合"; @l = return_list(); say "リストコンテキスト:@l"; $s = return_list(); say "スカラコンテキスト:$s"; exit; sub return_array { my @result = ("たこルカ", "は", "俺の嫁"); return @result; } sub return_list { return ("たこルカ", "は", "俺の嫁"); }
配列を返す場合 リストコンテキスト:たこルカ は 俺の嫁 スカラコンテキスト:3 リストを返す場合 リストコンテキスト:たこルカ は 俺の嫁 スカラコンテキスト:俺の嫁
配列とリストの違いです。
「配列をスカラコンテキストで評価すると、配列の大きさが返されます。 (これはリストに対しては成り立たないことに注意してください; この場合には、C のカンマ演算子と同じように最後の値が返され、 組み込み関数のように値を返すことはしません。)」
perldata - Perl のデータ型 - perldoc.jp
「配列をスカラコンテキストで評価すると、配列の大きさが返されます。 (これはリストに対しては成り立たないことに注意してください; この場合には、C のカンマ演算子と同じように最後の値が返され、 組み込み関数のように値を返すことはしません。)」
perldata - Perl のデータ型 - perldoc.jp