implicit修饰符,implicit修饰


implicit修饰符
语法:
LocalModifier ::= „implicit‟
ParamClauses ::= {ParamClause} [nl] „(‟ „implicit‟ Params „)‟
用implicit修饰符标记的模板成员和参数可以传递给隐含参数(§7.2),且可以在隐式转换中使用,这种情况称为视图(§7.3)。implicit修饰符不能用于所有的类型成员和顶级对象(§9.2)。
示例7.1.1 以下代码定义了一个幺半群的抽象类以及两个实现,StringMonoid和IntMonoid。这两个实现标记为implicit
abstract class Monoid[A] extends SemiGroup[A] {
def unit: A
def add(x: A, y: A): A
}
object Monoids {
implicit object stringMonoid extends Monoid[String] {
def add(x: String, y: String): String = x.concat(y)
def unit: String = “”;
}
implicit object intMonoid extends Monoid[Int] {
def add(x: Int, y: Int): Int = x + y
def unit: Int = 0
}

}

更多精彩内容请关注:http://bbs.superwu.cn

关注超人学院微信二维码:

相关内容