我有一些代码:
import scala.concurrent.Future
import scala.concurrent.ExecutionContext.Implicits.global
trait LogicUnit
trait Ezib extends LogicUnit
trait Zieb extends LogicUnit
object LogicUnit {
@inline
def combine[A <: LogicUnit, B <: LogicUnit](arg1: A, arg2: B): Future[LogicUnit] = {
if (arg1.isInstanceOf[Ezib] && arg2.isInstanceOf[Ezib]) return Future(new Ezib {})
else if (arg1.isInstanceOf[Zieb] && arg2.isInstanceOf[Zieb]) return Future(new Zieb {})
else if (arg1.isInstanceOf[Ezib] && arg2.isInstanceOf[Zieb]) return Future(new Zieb {})
else return Future(new Ezib {})
}
}
由于这段代码会运行很多,因此我正在尝试对其进行很多优化,因此我正在尝试组合 combine 函数的前两行。为此,我认为代码看起来像这样:
import scala.concurrent.Future
import scala.concurrent.ExecutionContext.Implicits.global
trait LogicUnit
trait Ezib extends LogicUnit
trait Zieb extends LogicUnit
object LogicUnit {
@inline
def combine[A <: LogicUnit, B <: LogicUnit](arg1: A, arg2: B): Future[LogicUnit] = {
if (arg1.isInstanceOf[typeOf(arg2)]) return Future(arg1)
else if (arg1.isInstanceOf[Ezib] && arg2.isInstanceOf[Zieb]) return Future(new Zieb {})
else return Future(new Ezib {})
}
}
有什么办法可以让代码检查这两种类型是否相同,这样我就不必匹配所有情况?