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" (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |