공통 하부 경계를 정의 스칼라 컴파일러/IF 다른 표현에 사용되는 값의 최소 공통 수퍼 복귀 타입을 정의 할 수있다 계층 :다음 함수의 파라미터
class X
class A extends X
class B extends X
함수 위 cond
형 X
의 값을 반환하는 것으로 정의된다.
A
및
B
유형 파라미터는
cond
함수의 정의에 있다면
그러나, 그 반환형 Any
이다
def cond[A, B](b: Boolean, t: A, f: B) = if (b) t else f
는 컴파일러 형의 최소 공통 퍼를 사용하게 할 수있다 매개 변수?
내가 성공하지 않고, 다음의 몇 가지 변화를 시도 :
def cond[A, B, R >: A with B](b: Boolean, t: A, f: B): R = if (b) t else f
def cond[A, B, R](b: Boolean, t: A, f: B)(implicit ev1: A <:< R, ev2: B <:< R): R = if (b) t else f
편집을 : 위의 질문은 과도하게 단순화된다. 당신이 정적으로 LUB을 알고있는 경우
class C[A](b: Boolean, t: A) {
def cond[B](f: B) = if(b) t else f
}