gpt4 book ai didi

arrays - 检查 sub 是否返回 undef

转载 作者:行者123 更新时间:2023-12-02 06:31:59 25 4
gpt4 key购买 nike

人为的示例:

use strict;
use warnings;

my $myval = 'a';
my @result = my_sub($myval);
if (@result) {
print "DEFINED\n";
}
my ($res1, $res2, $res3) = @result;
print "res1=$res1, res2=$res2, res3=$res3\n";
sub my_sub {
my $myval = shift;
if ($myval eq 'a') {
return undef;
}
return ("a","b","c");
}

如何检查 sub 是否返回 undef?

如何检查 sub 是否未返回 undef?

最佳答案

return undef 在列表上下文中返回一个元素的列表,即 undef

 @result = my_sub($myval);
if (@result == 1 && !defined($result[0])) {
warn "my_sub() returned undef";
} else {
print "my_sub() returned data\n";
}

也就是说,包含一个 undef 元素的列表几乎永远不是您想要的。请参阅How do I return nothing from a subroutine?您通常只想返回而不带任何参数。在标量上下文中,它返回 undef ,在列表上下文中,它返回一个空列表。

sub my_other_sub {
my $myval = shift;
if ($myval eq 'a') {
return;
}
return ("a","b","c");
}
...
@result = my_other_sub($arg1);
$result = my_other_sub($arg2);
if (@result == 0) { # or: if (!@result) ... or: unless (@result) ...
warn "my_other_sub(arg1) did not return any data";
} else {
print "my_other_sub(arg1) returned data\n";
}
if (!defined($result)) {
warn "my_other_sub(arg2) did not return any data";
} else {
print "my_other_sub(arg2) returned data\n";
}

关于arrays - 检查 sub 是否返回 undef,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51714243/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com