【发布时间】:2019-04-07 22:33:29
【问题描述】:
我需要为不同类型的基本操作创建方法,因此表达式的输出:println(1 + 2*I + I*3 + 2) 是3+5i。我是 Scala 的新手,到目前为止,这是我所拥有的:
class IClass() {
var value = 0
def *(number: Int): String = {
//value += number
value + "i"
}
}
object ComplexNumbers {
var TotalValue: Int = 0
var TotalString: String = ""
// ...
def Complex(num1: Int, num2: Int): String ={
num1 + "+" + num2 + "i"
}
implicit class IntMultiply(private val a: Int) extends AnyVal {
def + (b: String)= {
if(b.contains("i")){
TotalValue += a
TotalString.concat(b)
}
}
def * (b: IClass) = {
//b.value += a
a + "i"
}
}
implicit class StringAdd(private val a: String) extends AnyVal {
def + (b: String): String = {
if(b.contains("i")){
}
a + "i"
}
}
def main(args: Array[String]) {
println(Complex(1,2)) // 1+2i
val I = new IClass()
println(1 + 2*I + I*3 + 2) // 3+5i
// val c = (2+3*I + 1 + 4*I) * I
// println(-c) // 7-3i
}
}
我认为我走错了方向,因为通过在类型上实现这些操作方法,我在 println:Type Mismach 中得到一个错误,因为Any 返回类型我只更新字段而不返回任何内容。知道如何实现吗?
【问题讨论】: