scala implicit

    xiaoxiao2021-04-13  28

    implicit 可用于变量 伴生对象 参数 方法

    object Math { trait NumberLike[T] { def divide(x: T, y: Int): T } object NumberLikes { implicit object NumberLikeDouble extends NumberLike[Double] { def divide(x: Double, y: Int): Double = { println("o-------------") x / y } } } class Number extends NumberLike[Double] { def divide(x: Double, y: Int): Double = { println("t-------------") 123.0 } } implicit val test = new Number } object Statistics { import Math.NumberLike def mean[T](xs: Vector[T])(implicit ev: NumberLike[T]): T = { println(ev.isInstanceOf[NumberLike[T]]) ev.divide(xs.reduce(ev.plus(_, _)), xs.size) } }

    测试对于mean的隐含参数,伴生对象的优先级高于变量,还有貌似泛型的类型可以根据参数推断,所以可以省略

    转载请注明原文地址: https://ju.6miu.com/read-668590.html

    最新回复(0)