Scala-Int的运算符重载

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

我是Scala新手,我想知道是否有一个选项可以重载
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
的原因是什么?这称为值类,意味着您将避免实际创建实例的开销,因此您可以创建性能成本非常低的扩展方法