是否存在类似`or`但返回首个真值的Puppet运算符?
问题:Puppet中是否存在类似Ruby
or、返回首个真值而非布尔值的运算符? Puppet中的or运算符与Ruby的对应运算符行为存在差异:
Ruby中的表现:
false or 1 => 1
但在Puppet里,or仅会返回字面量true或false:
fail(false or 1) # 输出:Error while evaluating a Function Call, true
我需要这种Ruby风格的or行为,用于在参数默认值赋值时,在目标值与默认值之间做选择,比如理想中的写法:
Stdlib::IP::Address::V4::CIDR $my_ip = $settings[$system_server_index or 0][external_ip_w_cidr],
用if语句可以实现需求,但写法过于冗长:
Stdlib::IP::Address::V4::CIDR $my_ip = $settings[if $system_server_index { $system_server_index } else { 0 }][external_ip_w_cidr]
另外内置函数any也存在和or相同的问题——会将结果转换为字面量布尔值。
内容的提问来源于stack exchange,提问作者Rovanion
相关产品推荐
相关产品推荐

