2
我碰到了一段代碼,無法理解它。該片段是:Scala:通用方法隱式參數
implicit val dummyVisit = Visit("", 1L, 1, 1, 1, 1L)
implicit val dummyOrder = Order("", 1L, 1, 1, 1, 1L)
def process[T](events : Array[T])(implicit t: T):Unit = {
println(t)
if(!events.isEmpty)
t match {
case r: Order => processOrder(events.asInstanceOf[Array[Order]])
case r: Visit => processVisit(events.asInstanceOf[Array[Visit]]);
}
}
def processOrder(arr: Array[Order]): Unit = { println(arr.size) }
def processVisit(arr: Array[Visit]): Unit = { println(arr.size) }
的implicit
可變t
,需要dummyVisit
& dummyOrder
存在。
問題:
這是使用
implicit parameter
的正確方法?有沒有更好的方式來獲得班級類型的
T
,而不使用隱式參數?
Implicits使用隱式解析規則http://stackoverflow.com/questions/5598085/where-does-scala-look-for-implicits 我搜索不明白你的問題?您可以在「訪問」或「訂單」數組上調用進程(xs)。如果相應的隱式不在範圍內,process(xs)將不會編譯 –
看起來像使用多態性的不好方法或缺乏 –