Raku如何实现符合DRY原则仅方法结果非Nil时重赋值变量?
Raku 符合要求的惯用法实现
最简洁的写法如下,全程目标变量仅出现一次,不需要额外临时变量,也没有使用andthen关键字:
my $nicevariable = "foobar"; # 核心逻辑 $nicevariable <>= .?possibly-nonexistent-meth // $_; say $nicevariable;
实现说明
- 使用Raku内置的
<>=运算符:它会先把左侧变量的值绑定到主题变量$_,计算右侧表达式结果后再赋值回左侧变量,天然满足目标变量仅出现一次的DRY要求 - 安全调用运算符
.?保证如果目标方法不存在,直接返回Nil不会抛出异常 - 定义或运算符
//保证当方法调用结果未定义(方法不存在/返回值为Nil)时,回退到$_也就是变量的原始值,不会覆盖原有内容
如果更偏好块结构的写法,也可以用given实现,同样满足变量仅出现一次的要求:
given $nicevariable { $_ = .?possibly-nonexistent-meth // $_ }
内容的提问来源于stack exchange,提问作者mykhal
相关产品推荐
相关产品推荐

