perl - 在 Perl 中使用三元条件运算符有更短的方法吗?
问题描述
如果可能的话,我想在一行中完成以下任务,并且不会太长:
my $variable = defined($self->{_some_thing_stored_here}) ? $self->{_some_thing_stored_here} : new some_function(@with_some_parameters);
是否有可能以类似的方式使用“$_”在循环中获取变量来获取 if 条件的参数,使其看起来像这样:
my $variable = defined($self->{_some_thing_stored_here}) ? $_ : new some_function(@with_some_parameters);
PD:我知道可以将条件放入变量中,但我想知道是否可以缩短它。
解决方案
定义或运算符:
my $variable = $self->{_some_thing_stored_here} // some_function(@with_some_parameters);
需要 Perl 5.10+。
您也可以(ab)使用后缀 foreach来利用$_
定义的检查不是您所需要的,尽管它不是最常见的习惯用法,并且您应该注意不要使用后缀语句修饰符声明变量,并且您不要调用任何会修改现在别名的 global 的东西$_
。
my $variable;
$variable = check($_) ? $_ : something_else() for $self->{_some_thing_stored_here};
# make sure something_else does not clobber $_
# that would also clobber $self->{_some_thing_stored_here} !
推荐阅读
- android - Flutter audioplayers apk 版本不起作用
- swift - 在 macOS 上额外添加菜单栏
- https - 我可以获得用于本地开发的 Letsencrypt 证书吗
- python - 如何在 Anaconda3 中安装 pyttsx?
- spring-boot - 配置服务器中的 Swagger 2 @ApiIgnore 属性切换
- excel - VBA - 复制列中的所有数据
- python - 计算数组中的条目与数组中数字之和的比率
- css - Ionic 4中不同页面的不同最大宽度
- class - Python 类。为什么我的程序在用户输入时不打印/返回文本消息?
- c++ - 我的代码不会使用 ifstream 和 ofstream 从文件中读取和显示数据