Scala-Int的运算符重载
我是Scala新手,我想知道是否有一个选项可以重载Scala-Int的运算符重载,scala,Scala,我是Scala新手,我想知道是否有一个选项可以重载Intplus。 举个例子,假设我希望1+2返回1*2。 我可以这样做吗?您不能重载最后一个类的方法,例如Int。只能添加新的(扩展)方法: 或者,如果您想将+用于其他用途,请引入不同的类型: class MyInt(val self: Int) extends Proxy { def + (b: MyInt): MyInt = new MyInt(self * b.self) } assert(new MyInt(2) + new MyI
Int
plus。
举个例子,假设我希望1+2
返回1*2
。
我可以这样做吗?您不能重载最后一个类的方法,例如
Int
。只能添加新的(扩展)方法:
或者,如果您想将+
用于其他用途,请引入不同的类型:
class MyInt(val self: Int) extends Proxy {
def + (b: MyInt): MyInt = new MyInt(self * b.self)
}
assert(new MyInt(2) + new MyInt(3) == new MyInt(6))
不能重载最后一个类(如
Int
)的方法。只能添加新的(扩展)方法:
或者,如果您想将+
用于其他用途,请引入不同的类型:
class MyInt(val self: Int) extends Proxy {
def + (b: MyInt): MyInt = new MyInt(self * b.self)
}
assert(new MyInt(2) + new MyInt(3) == new MyInt(6))
您的意思是更改
Int
的行为,还是在+
、-
等重载的情况下创建自己的整数类?更改Int的行为,或者如果不可能,请在我自己的类中对其进行更改您必须创建自己的类。你不能更改Int
的+
方法的作用。好的,但在我自己的类中,我可以只更改Int的一个运算吗?你是说更改Int
的行为还是创建自己的整数类,其中+
和-
等都是重载的?更改Int的行为,或者如果不可能,在我自己的课堂上做吧,你得自己上课。您不能更改Int
的+
方法的功能。好的,但在我自己的类中,我可以只更改Int的一个操作吗?您使用扩展AnyVal
的原因是什么?这称为值类,意味着您将避免实际创建实例的开销,因此,您可以创建性能成本非常低的扩展方法使用扩展AnyVal
的原因是什么?这称为值类,意味着您将避免实际创建实例的开销,因此您可以创建性能成本非常低的扩展方法