gpt4 book ai didi

perl - 这个perl代码可以简化吗?

转载 作者:行者123 更新时间:2023-12-01 07:11:25 25 4
gpt4 key购买 nike

foreach my $f($query->param) {
foreach my $v($query->param($f)) {
switch($f) {
case 'a' {
switch($v) {
case 1 { code1; }
case 2 { code2; }
case 3 { code3; }
}

case 'b' {
switch($v) {
case 1 { code4; }
case 2 { code5; }
}

case 'c' {
switch($v) {
case 1 { code6; }
case 2 { code7; }
case 3 { code8; }
case 4 { code9; }
}
}
}
}
}

最佳答案

最重要的是......不要使用Switch.pm。如果您使用 Perl 5.10 或更新版本,given/when 是 native switch 语句。

调度表是您寻求的解决方案。 http://www.perlmonks.org/?node_id=587072描述了调度表,这是一种通过基于与散列键匹配的值的散列来执行代码的技术。

编辑,例如:

my %dispatch_table = (
'a' => {
'1' => sub { code1; },
'2' => sub { code2; },
'3' => sub { code3; },
'b' => {
'1' => \&some_sub,
'2' => sub { code4; },
}
)

if ( exists( $dispatch_table{$f} ) and exists( $dispatch_table{$f}{$v} ) ) {
$dispatch_table{$f}{$v}->();
}
else {
# some default
}

关于perl - 这个perl代码可以简化吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6891800/

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