我有这样的构造:
if(condition1)
lengthyOperation1
else if(condition2)
lengthyOperation2
else if(condition3)
lengthyOperation3
...
else
lastLengthyOperation
我想用以下方式表达:
lazy val seq = Seq(
condition1 -> lengthyOperation1,
condition2 -> lengthyOperation2,
condition3 -> lengthyOperation3,
...
true -> lastLengthyOperation
)
seq.find(_._1).match { case(_, v) => v }
问题是最后一行的评估在到达“seq”时会执行所有冗长的操作。我该如何做到这一点,以便仅在需要时才执行冗长的操作?
注意:条件不是同一表达式的可能模式匹配(即我不能为此使用单个匹配语句)
编辑:我应该为此使用 Stream 吗?