リストを返す関数をスカラコンテキストで評価
投稿: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
