2010-04-30 4 views
1

스칼라 2.7에서 같은 클래스의 다른 메서드의 매개 변수로 메서드를 사용하고 싶습니다.스칼라 2.7 : 참조가 모호합니다 (두 번 가져옴)

나는 클래스와 동반자 개체가 :

을 : 일반적으로 나는이 mM(matrix).logsumexp 같은 logsumexp 사용하지만 mM(matrix).app(mM.logsumexp)(1)을 사용할 수 없습니다 행에 적용 할 경우, 나는 오류가

class mM(var elem:Matrix){ 
    //apply a function on a dimension rows (1) or cols (2) 
    def app(func:Iterable[Double]=>Double)(dim : Int) : Matrix = { 
     ... 
    } 
    //utility function 
    def logsumexp(): Double = {...} 
} 

object mM{ 
    def apply(elem:Matrix):mM={new mM(elem)} 
    def logsumexp(elem:Iterable[Double]): Double ={ 
     this.apply(elem.asInstanceOf[Matrix]).logsumexp() 
    } 
} 

error: reference to mM is ambiguous; 
it is imported twice in the same scope by 
import mM 
and import mM 

가장 세련된 솔루션은 무엇입니까? logsumexp()를 다른 클래스로 변경해야합니까? =)

덕분에

+1

스칼라 2.7을 사용하고 있습니까? 나는 그것을 2.8 이하로 테스트했고 정상적으로 작동한다. –

+0

실제로, 나는 스칼라 2.7 =)을 사용하고있다. –

+0

이것은 원래의 질문을 다루지는 않지만'Matrix'를 asInstanceOf로 단순히 대신 사용하여'Iterable [Double]'을'asInstanceOf'로'Matrix'로 캐스팅하는 이유는 무엇입니까? 논의? –

답변

0

나는 마지막 단지 내 mM의 클래스 내부 new mM(matrix)하지 mM(matrix) 문을 사용하여 오류를 피했다.

@Rex Kerr : 당신이 맞습니다. 유형을 Matrix으로 변경했습니다.

감사합니다.