有沒有辦法在Scala中以更優雅的方式編寫此代碼?Scala中的一行布爾模式匹配
基本上我有以下代數數據類型:
trait Exp
case class Atom(i: Int) extends Exp
case class Add(l: Exp, r: Exp) extends Exp
和我要檢查,如果給定的變量內 的條件表達式的特定術語相匹配。例如,我可以寫
val x = Add(Atom(1), Atom(2))
if (x match { case Add(Atom(1), Atom(2)) => true; case _ => false }) {
println("match")
}
但是,它很醜且冗長。有沒有更優雅的選擇?
「常」 的評論是不正確的;你必須有一個預期的類型Func或PF。此外,我的答案中的幫手方法,儘管它們永遠不會變得髖關節,但它一直保持低調,但看起來好多了。 –
@ som-snytt你是對的,我刪除了錯誤的句子。 –