gpt4 book ai didi

Perl 5.8 级联空检查

转载 作者:行者123 更新时间:2023-12-01 02:10:47 25 4
gpt4 key购买 nike

假设我有以下 Groovy 代码:

String name = child.getParent()?.getParent()?.getName();

请注意 getParent()可能会返回 null ,在这种情况下,代码会继续工作,不会抛出空指针异常。

有没有办法在 Perl 5.8 的一行中清楚地做到这一点?我愿意编写一个通用的辅助方法来实现这一点。

我遇到了有几个嵌套对象并且不得不执行以下操作的情况:
my $name = $child && $child->getParent && $child->getParent->getParent && $child->getParent->getParent->getName;

是的,这是在一行中,但在 IMO 中是模糊的。

最佳答案

在我看来,您的原始 Groovy 代码无论如何都处于可读性的边界上。我会以不同的方式实现它,但 Perl 中的类似表达式是

my $name = (
$node = $node->get_parent or
$node = $node->get_parent or
$node->get_name
);

语言的效用不是由它用很少的字符表示复杂结构的能力来定义的

关于Perl 5.8 级联空检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29521279/

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