如何在下面找到.to方法:
'a' to 'j'
这与:
相同('a'.to('j'))
但是在Char类上找不到.to方法?是否存在某种隐式转换?
答案 0 :(得分:2)
如果您查看始终自动导入的scala
包Predef
对象,您会发现它扩展了包含
LowPriorityImplicits
@inline implicit def charWrapper(c: Char) =
new runtime.RichChar(c)
此方法会将您的Char
转换为runtime.RichChar
RichChar
在其中扩展了runtime.IntegralProxy[Char]
,其中包含方法:
def to(end: T): NumericRange.Inclusive[T] =
NumericRange.inclusive(self, end, num.one)
这就是你得到的。
如果你反编译你的代码,你会看到:
new RichChar(Predef..MODULE$.charWrapper('a'))
.to(BoxesRunTime.boxToCharacter('j'));
答案 1 :(得分:0)
回答你的第一个问题 - 是的,两者都是一样的 2nd- .to方法是ScalaNumberProxy trait和.to的方法,它提供了immutable.NumericRange类型。 你可以检查 - val p =(' a'。(' j'))或val p =' a'到' j&#39 ; 知道p的类型