Perl - 连接非空字符串
Perl - Concatenate non-empty strings
我需要一点帮助 "optimizing" 我的代码,因为我相信有更好、更简洁的方法来完成它。我有 6 个变量,它们是通过从更长的字符串中解析出来创建的:
Year
Make
Model
Color
ColorLower
Style
根据记录,我可能有部分或所有这些变量的详细信息。但在大多数情况下,有些是空白的。在填充变量之后,我将它们添加到一个数据库字段中,该字段是 car/vehicle.
的描述
目前我的 if/else 块一个接一个,如果变量的长度不为零,则连接的描述变量
if (length($Year)>0)
{
$Description == $Description + " " + Year
}
elsif (length($Make) > 0)
$Description == $Description + " " + $Make
} ...and so on
TMTOWTDI 绝对适用于此,我总是惊叹于专家们提出的优雅的一行。尽管我现在所拥有的正在运行,但我很想知道是否有一种更短、更紧凑的方式可以最大化我的代码。
谢谢大家
也许是这样的:
$desc = join ' ', grep { length $_ > 0 }
$Year, $Make, $Model, $Color, $ColorLower, $Style;
不需要长度测试。空字符串是 false,所以这将有效
$desc = join ' ', grep $_, $year, $make, $model, $color, $color_lower, $style;
还值得指出的是,大写字母是为 Perl 全局标识符(例如包名称)保留的。对于母语不是英语的人来说,混合大小写标识符也特别困难,Wikipedia has this to say
"At least one study found that readers can recognize snake case values more quickly than CamelCase
"
我需要一点帮助 "optimizing" 我的代码,因为我相信有更好、更简洁的方法来完成它。我有 6 个变量,它们是通过从更长的字符串中解析出来创建的:
Year
Make
Model
Color
ColorLower
Style
根据记录,我可能有部分或所有这些变量的详细信息。但在大多数情况下,有些是空白的。在填充变量之后,我将它们添加到一个数据库字段中,该字段是 car/vehicle.
的描述目前我的 if/else 块一个接一个,如果变量的长度不为零,则连接的描述变量
if (length($Year)>0)
{
$Description == $Description + " " + Year
}
elsif (length($Make) > 0)
$Description == $Description + " " + $Make
} ...and so on
TMTOWTDI 绝对适用于此,我总是惊叹于专家们提出的优雅的一行。尽管我现在所拥有的正在运行,但我很想知道是否有一种更短、更紧凑的方式可以最大化我的代码。
谢谢大家
也许是这样的:
$desc = join ' ', grep { length $_ > 0 }
$Year, $Make, $Model, $Color, $ColorLower, $Style;
不需要长度测试。空字符串是 false,所以这将有效
$desc = join ' ', grep $_, $year, $make, $model, $color, $color_lower, $style;
还值得指出的是,大写字母是为 Perl 全局标识符(例如包名称)保留的。对于母语不是英语的人来说,混合大小写标识符也特别困难,Wikipedia has this to say
"At least one study found that readers can recognize snake case values more quickly than
CamelCase
"