Condi: !RET&(!DFTRAMBYP&((TENA&! QNAPA&! CENA)|(!TENA&!TONAPA&!TCENA)) IDFTRAMBYP) &EMAA[2]&EMAA[1]&EMAA[O]&EMASA Sub_whenw: !RET&!DFTRAMBYP&TENA&!TONAPAS!CENA&EMAA[2]&EMAA[1]&EMAA[0]&EMASA !RET&!DFTRAMBYP&!TENA&!TONAPA&!TCENA&EMAA[2]&EMAA[1]&EMAA[0]&EMASA !RET&DFTRAMBYP&EMAA[2]&EMAA[1]&EMAA[0]&EMASA condi: !RET&TENA&((DFTRAMBYP&!SEA)I(!DFTRAMBYP&!CENA)) sub_whenw: !RET&TENA&DFTRAMBYP&!SEA !RET&TENA&!DFTRAMBYP&!CENA 根据上面的cond使用perl转化成下面的sub_whenw,给出通用的代码设计
时间: 2023-12-21 10:05:19 浏览: 56
根据上述 cond 和 sub_whenw 的逻辑关系,可以将 cond 转换为通用的 sub_whenw 代码设计如下:
```
sub sub_whenw {
my ($RET, $DFTRAMBYP, $TENA, $QNAPA, $CENA, $TONAPA, $TCENA, $EMAA_2, $EMAA_1, $EMAA_0, $EMASA, $SEA) = @_;
if (!$RET) {
return 0;
}
if ($TENA && (($DFTRAMBYP && !$SEA) || (!$DFTRAMBYP && !$CENA))) {
return ($EMAA_2 && $EMAA_1 && $EMAA_0 && $EMASA && $TENA && (($DFTRAMBYP && !$SEA) || (!$DFTRAMBYP && !$CENA)));
}
if (!$DFTRAMBYP && $TENA && !$TONAPA && !$CENA) {
return ($EMAA_2 && $EMAA_1 && $EMAA_0 && $EMASA && $TENA && !$DFTRAMBYP && !$TONAPA && !$CENA);
}
if (!$DFTRAMBYP && !$TENA && !$TONAPA && !$TCENA) {
return ($EMAA_2 && $EMAA_1 && $EMAA_0 && $EMASA && !$DFTRAMBYP && !$TENA && !$TONAPA && !$TCENA);
}
if ($DFTRAMBYP) {
return ($RET && $DFTRAMBYP && $EMAA_2 && $EMAA_1 && $EMAA_0 && $EMASA);
}
return 0;
}
```
这个代码实现了与原先的 cond 逻辑等价的功能,可以根据需要进行调用。需要注意的是,这里的实现是基于特定的输入参数和输出结果做的,如果输入参数和输出结果不同,可能需要对代码进行相应的修改。另外,这个实现也没有对输入参数进行边界检查和错误处理,需要在实际使用时自行添加。
阅读全文