1 "nok" -> 0 else -> -1 我的解决方案很清晰,但不是很-6ren">
gpt4 book ai didi

Perl:以 "perl' ish"方式进行值映射

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

我喜欢将内容从一个演示文稿映射到另一个演示文稿,我正在寻找一种“perl'ish”的方式来实现它。

示例:

"ok" -> 1 
"nok" -> 0
else -> -1

我的解决方案很清晰,但不是很优雅。如果有超过 3 个可能的映射(0、1、-1),那就很痛苦了。

my $val = "ok";
if ($val eq "ok")
{
$val = 1;
}
elsif ($val eq "nok")
{
$val = 0;
}
else
{
$val = -1;
}

我可以使用散列,但我仍然需要处理其他部分。

$val = "ok";
my %h = ("ok" => 1, "nok" => 0);
if (defined ($h {$val})
{
$val = $h {$val};
}
else
{
$val = -1;
}

有什么方法可以在一行中完成它但仍然保持可读性??

谢谢!

最佳答案

我认为 exists 可能比 defined 更安全。

my %translate = (ok => 1, nok => 0);

$val = exists $translate{$val} ? $translate{$val} : -1;

但是,如果您可以确定所有哈希值都不会是 undef,则可以使用“定义或”运算符:

$val = $translate{$val} // -1;

关于Perl:以 "perl' ish"方式进行值映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47833420/

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