pla*_*etp 17 arrays perl operators
我使用||=运算符为变量提供默认值,例如
$x ||= 1;
Run Code Online (Sandbox Code Playgroud)
我尝试将此语法与数组一起使用但出现语法错误:
@array||= 1..3;
Can't modify array dereference in logical or assignment (||=) ...
Run Code Online (Sandbox Code Playgroud)
它是什么意思,我应该如何为数组提供默认值?
cjm*_*cjm 18
因为||是标量运算符.如果@array||= 1..3;有效,它将1..3在标量上下文中进行评估,这不是您想要的.它还在标量上下文中评估数组(这是好的,因为标量上下文中的空数组是假的),除了你不能分配scalar(@array).
要指定默认值,请使用:
@array = 1..3 unless @array;
Run Code Online (Sandbox Code Playgroud)
但请注意,没有办法区分从未初始化的数组和已分配空列表的数组.它不像标量,你可以区分undef和空字符串(虽然||=不区分它们).
eugene y发现了这条perl.perl5.porters消息(官方Perl开发人员的邮件列表),其中详细介绍了这一点.
| 归档时间: |
|
| 查看次数: |
350 次 |
| 最近记录: |