gpt4 book ai didi

scala - 如何在 Scala 中取消导入 String "+"运算符?

转载 作者:行者123 更新时间:2023-12-02 17:23:08 24 4
gpt4 key购买 nike

我正在编写一个 DSL,其中“+”运算符严格是数字,就像其他一些流行语言一样。它很接近,但是字符串“+”运算符搞乱了我的隐式转换。取消导入 String 类的运算符的语法是什么?

为了更清楚,而不是这样:

scala> var x = "2" + 3;x: java.lang.String = 23

我想得到 x: Int = 5

我想我只需要两件事就能实现这一点:

  • 从字符串中删除(在我的范围内卸载)“+”的定义
  • 定义 String 到 Int 的隐式转换

我被困在第一步了。

谢谢

最佳答案

根据Scala spec第12.3.1节,String+ 方法经过编译器的特殊处理。我不确定,但我认为这意味着您无法“取消导入”它,这是一种耻辱,因为它确实破坏了类型系统(很像相关的 toString 方法)。

您能否在 DSL 中为运算符使用不同的名称,例如 ++&

关于scala - 如何在 Scala 中取消导入 String "+"运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2664274/

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