三元表达式的有效性

三元表达式的有效性

hit我根据是否设置变量impl == "MATCH"。虽然大多数人确实建议尝试一些事情来确认代码的执行,但这个问题主要是为了让其他人看看是否可能存在副作用或糟糕的编码风格,以便我改进它。

  (impl == "MATCH") ? hit = $0 ~ prl : hit = match($0, prl)

答案1

我想你正在尝试写这个

if (impl == "MATCH") { hit = ($0 ~ prl) } else { hit = match($0, prl) }

如果是这样,那么由于两个结果部分都是对同一变量的赋值,你可以这样写,

hit = (impl == "MATCH") ? ($0 ~ prl) : match($0, prl)

您自己的代码确实可以工作(您尝试过吗?),但它并没有真正在表达式中使用三元运算符;相反,它更像是一个复杂的if……结构thenelse它使用副作用来驱动分配的主要意图。我称之为糟糕的编码风格。

相关内容