大部分Scala的单例对象不是单独存在的,而是同时存在相同名称的类。此时这个单例对象是“类”的伴生对象,而类则是“单例对象”的伴生类。类与它的伴生对象必须在同一个资源文件内。
例如:
case class NumberPair(num1: Int, num2: Int) case class Sum(sumResult: Int) object NumberPair { implicit def add: NumberPair => Sum = { np => Sum(np.num1 + np.num2) } } val np = NumberPair(1, 2) println(np.sumResult)
此时输出结果为:
3
上面的例子中,伴生对象的成员属性/方法会自动被搜索到和并关联。