用于确定是否初始化Perl值的命令

时间:2016-08-16 22:00:44

标签: arrays perl groovy initialization ternary-operator

我现在的问题是基于我在CSV文档中遇到的一个问题,但它也更为一般。

我希望在Java / Groovy / Gosu中使用类似空问号的内容来确定数组索引是否已初始化。

我有类似的东西:

for ( my i = 0; i < @engVals or i < @frenchVals; i++ ) {

    $csv->print($file, [ $engVals[i] ?: "",  , $frenchVals[i] ?: "" ] );

    # Where Elvis ops ensure that the array element at i is initialized, and if not stores blank in the CSV
}

2 个答案:

答案 0 :(得分:8)

defined $engVals[i]

请参阅http://perldoc.perl.org/functions/defined.html

或者你可以做到

$engVals[i] // ''

请参阅http://perldoc.perl.org/perlop.html#Logical-Defined-Or

答案 1 :(得分:3)

您需要已定义或运算符//,如果已定义则返回其左操作数,否则返回其右操作数

$csv->print($file, [ $engVals[i] // "", $frenchVals[i] // "" ] );

我不确定为什么两个数组元素之间有两个逗号。如果这是一个错字,那么上面的语句就是你想要的,但如果你打算在得到的CSV数据中应该有一个中间空白字段,那么你应该写, "",