2015-12-18 52 views
6

假設我有一個密封的箱體類層次結構如下所示:壓扁密封的情況下的類層次

sealed trait Expr 
case class Const(val: Double) extends Expr 
case class Plus(x: Expr, y: Expr) extends Expr 
case class Times(x: Expr, y: Expr) extends Expr 
  • 是否可以自動轉換表情如Plus(1,Plus(2,3))到HLists的HList?
  • 即使在某個函數f(e: Expr)內,即在編譯時未知e的具體結構時,該轉換是否還能工作?
+0

......當編譯時e的特定結構未知時,由於「Expr」是「密封特徵」,因此編譯器在編譯時知道所有的子類,窮舉匹配。我不明白這個評論/問題 - 你能解釋一下嗎? –

+0

我的意思是:從f裏面,它不是明確知道它是用f(Plus(1,x))還是f(Times(a,b))調用的 - 是從內部將表達式變成HList的障礙F? – NietzscheanAI

回答