加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 通过隐式转换覆盖Int上的算术运算符

发布时间:2020-12-16 18:19:35 所属栏目:安全 来源:网络整理
导读:说,出于美学原因,我希望能够写: 3 / 4 并且/是一个类的方法,存在从Int到的隐式转换,例如: class Foo(val i: Int) { def /(that: Int) = // something}implicit def intToFoo(i: Int) = new Foo(i) 这是否可能,即是否可以“禁用”Int上的/方法? 解决方法
说,出于美学原因,我希望能够写:

3 / 4

并且/是一个类的方法,存在从Int到的隐式转换,例如:

class Foo(val i: Int) {
  def /(that: Int) = // something
}

implicit def intToFoo(i: Int) = new Foo(i)

这是否可能,即是否可以“禁用”Int上的/方法?

解决方法

简而言之:不,你不能.

只有在尝试调用尚不存在的方法时,才会发生隐式解析.

更“惯用”的解决方案是创建自己的伪数字类型,如:

case class Rational(a: Int,b: Int) {
  // other methods
}

val foo = Rational(3,4)

要么

case class Path(value: String) {
  def /(other: String): Path = ...
}

val p = Path("3") / "4"

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读