jwv*_*wvh 6 scala standard-library
Some("abcdefg").get(3) //res0: Char = d
Run Code Online (Sandbox Code Playgroud)
的参数get()被发送到apply()的方法String,但源代码为Option(和Some)不具有get()其需要的参数,和方法String不具有get在所有的方法。
那么get()正在调用什么呢?它是爪哇岛的一颗痣吗?
它StringOps.apply来自隐式转换
augmentString(Some("abcdefg").get)(3)
Run Code Online (Sandbox Code Playgroud)
@inline implicit def augmentString(x: String): StringOps = new StringOps(x)
Run Code Online (Sandbox Code Playgroud)
实际上,在这种情况下,这.get(x)不是单独的get()方法,而是的缩写.get.apply(x)。因此,这是get该Some类型的标准方法。不需要隐式。
Some(Seq(99,32,12,7,101)).get(3) //res0: Int = 7
Run Code Online (Sandbox Code Playgroud)
非常感谢@Mario Galic向我指出正确的方向。