gpt4 book ai didi

perl - 我如何检查子例程是否返回 *nothing*

转载 作者:行者123 更新时间:2023-12-05 04:12:44 28 4
gpt4 key购买 nike

我如何确定一个 perl 函数返回 nothing 甚至 undef

例子:

sub test {
return;
}

sub test {}

问题是好奇的代理函数也可以返回字符串、列表……并且是外部包的一部分。所以我无法用 test() || 检查undef 因为空列表或字符串将被 undef 覆盖。

有谁知道如何检查“null”值,以便创建条件异常?

最佳答案

If you use return and you specify no return value, the subroutine returns an empty list in list context, the undefined value in scalar context, or nothing in void context.

If no return is found and if the last statement is an expression, its value is returned. If the last statement is a loop control structure like a foreach or a while, the returned value is unspecified. The empty sub returns the empty list.

- perlsub

在这两种情况下,它都会返回空列表。所以你无法区分它们。

如果我对你的理解是正确的,那么当你执行 test () || 时,你正在尝试避免空列表被 undef 覆盖未定义。但这没关系。在 Perl 中,空列表和 undef 都被认为是错误的。

下面所有的都是假的

0
'0'
undef
'' # Empty scalar
() # Empty list
('')

关于perl - 我如何检查子例程是否返回 *nothing*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39872477/

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