gpt4 book ai didi

scala - 重载现有的 `toInt` 方法

转载 作者:行者123 更新时间:2023-12-04 12:36:12 25 4
gpt4 key购买 nike

toInt StringLike 中的方法不带任何参数,只能解析十进制。因此,要解析二进制、十六进制等,我们需要求助于 Java 的 Integer#parseInt(String s, int radix) .

为了纠正这种情况,我尝试了以下方法

implicit def strToToIntable(s: String) = new {
def toInt(n: Int) = Integer.parseInt(s, n)
}

然而,
"101".toInt(2)

导致 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)

REPL 很高兴:
scala> "101".toInt(2)
res4: Int = 5

关于scala - 重载现有的 `toInt` 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7921283/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com