Scala의 매개 변수에 대해 여러 유형을 허용하십시오
-
09-12-2019 - |
문제
메소드 업데이트 ()와 함께 두 개의 객체 인 Objecta 및 ObjectB가 있습니다.objecta 또는 objectb (그러나 다른 유형도 아니지만 다른 유형)를 허용하는 함수를 작성하고 싶습니다.개념적으로, 이것은 내가하려고하는 것입니다 :
def doSomething[T <: ObjectA | T <: ObjectB](obj: T) = {
obj.update
}
.
이 문제를 해결할 수있는 다른 방법 (예 : 업데이트 () 방법, 공통 기본 클래스 등의 구조적 타이핑을 해결할 수있는 다른 방법이 있습니다. 그러나 내 질문은 스칼라 에서이 방법을 할 수있는 것입니다.구문은?그리고 이것은 무엇을 불렀습니까?
해결책
스칼라에서는 Disjoint Union을 만드는 유형이 있습니다. 기본적으로 다음과 같은 일을 할 것입니다 :
def doSomething(obj: Either[ObjectA, ObjectB]) {
obj.fold(fa, fb)
}
.
Checkout http://www.scala-lang.org/api./current/scala/eher.html
제휴하지 않습니다 StackOverflow