gpt4 book ai didi

perl - 用最后一个值填充剩余字段的简单算法

转载 作者:行者123 更新时间:2023-12-02 09:28:02 25 4
gpt4 key购买 nike

我有一行用逗号分隔,我需要将其分成 4 个单独的变量。

即像 val1, val2, val3, val4 这样的行将产生以下 4 个变量:

var1 = val1
var2 = val2
var3 = val3
var4 = val4

现在我可以通过使用类似的东西轻松获得它:

($var1, $var2, $var3, $var4) = (split /,/, $inputLine);

但是,如果输入行包含的值少于 4 个,则其余变量应包含最后一个可用值。

即如果输入行是 val1, val2,那么变量应该这样设置:

var1 = val1
var2 = val2
var3 = val2
var4 = val2

什么是解决这个问题的优雅方法?

最佳答案

//="defined or" operator .

$var2 //= $var1;
$var3 //= $var2;
$var4 //= $var3;

正如链接文章中所述,如果您使用 5.10 之前的版本,则相当于:

$var2 = defined($var2) ? $var2 : $var1;
$var3 = defined($var3) ? $var3 : $var2;
$var4 = defined($var4) ? $var4 : $var3;

某些字符串是假值:

$str = '';
if ($str) {
print "true\n";
} else {
print "false\n";
}
# prints 'false'

$str = '0';
if ($str) {
print "true\n";
} else {
print "false\n";
}
# prints 'false'

如果 '''0' 在您的程序中是“无效”值,您可以使用 ||= 运算符。< br/>如果仅需要覆盖 undef,请使用上述两个版本之一。

$var2 ||= $var1; # $var2 will be overriden if $var2 is undef or '' or '0'
$var3 ||= $var2; # $var3 will be overriden if $var3 is undef or '' or '0'
$var4 ||= $var3; # $var4 will be overriden if $var4 is undef or '' or '0'

关于perl - 用最后一个值填充剩余字段的简单算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35984156/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com