StringOps文档中有一个Shadowed Implicit Value Members部分。例如:
def split(arg0: String, arg1: Int): Array[String]
隐含信息
此成员是通过 scala.Predef 中的方法 unaugmentString 执行的从 StringOps 到 String 的隐式转换添加的。遮蔽
这个隐式继承的成员被此类中的一个或多个成员遮蔽。要访问此成员,您可以使用类型归属:(stringOps: String).split(arg0, arg1)
定义类
字符串
但是当我尝试运行以下程序时:
"aaa bbb ccc".split(" ", 2) //> res0: Array[String] = Array(aaa, bbb ccc)
调用String.split(arg0: String, arg1: Int)
不需要使用描述的文档中的类型归属。
那么Shadowed Implicit Value Members指的是什么?我试图问谷歌,但找不到任何参考。
是不是像:
class A {
def foo() = println("foo")
}
class AOps(a: A) {
def bar() = println("bar")
def foo() = println("new foo")
def foo(i: Int) = println("foo %d".format(i))
}
object Program {
implicit def A2AOps(a: A) = new AOps(a) //> A2AOps: (a: A)AOps
val a = new A() //> a : A = A@15669ae
a.foo //> foo
a.bar //> bar
(a: AOps).foo //> new foo
a.foo(1) //> foo 1
}
那么String.split(...)
和StringOps.split
函数签名是不同的,所以不需要“类型归属”。
这就是“Shadowed Implicit Value Members”的含义吗?我有点疑惑。谢谢!