假设我有以下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
);
语言的实用性不是由它以很少的字符表示复杂结构的能力来定义的