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)将不会编译 –
看起来像使用多态性的不好方法或缺乏 –