Lui*_*hys 7 scala overloading enrich-my-library
该toInt在方法StringLike不带任何参数,并且只能在小数解析.因此,要解析二进制,十六进制等,我们需要求助于Java Integer#parseInt(String s, int radix).
为了解决这种状况,我尝试了以下方法
implicit def strToToIntable(s: String) = new {
def toInt(n: Int) = Integer.parseInt(s, n)
}
Run Code Online (Sandbox Code Playgroud)
然而,
"101".toInt(2)
Run Code Online (Sandbox Code Playgroud)
导致REPL编译器"崩溃"并且在编译的代码中也不起作用.
使用"丰富我的库"模式重载现有方法是否存在一些限制?
如果没有隐式,运行"101".toInt(2)会导致 REPL 告诉我 Int 不接受参数。所以我猜发生的事情是它正在运行"101".toInt,然后试图调用apply(2)它,这是没有意义的。我建议对你的皮条客进行微妙的重命名toInt以避免出现问题。
编辑
我自己也只是取得了一些成功。我明确地将一个拉皮条的字符串类定义为
class StrToRadixInt(s:String) {
def toInt(radix: Int) = Integer.parseInt(s,radix)
}
implicit def strToToIntable(s:String) = new StrToRadixInt(s)
Run Code Online (Sandbox Code Playgroud)
REPL 很高兴:
scala> "101".toInt(2)
res4: Int = 5
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
420 次 |
| 最近记录: |