You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 05:18:02