Dans Scala 2.7, je souhaite utiliser une méthode en tant que paramètre d'une autre méthode de la même classe.Scala 2.7: la référence est ambiguë (importée deux fois)
J'ai une classe et des objets qui sont compagnons:
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()
}
}
Normalement, j'utilise logsumexp comme ça mM(matrix).logsumexp
, mais si vous voulez appliquer aux lignes que je ne peux pas utiliser mM(matrix).app(mM.logsumexp)(1)
, je reçois l'erreur:
error: reference to mM is ambiguous;
it is imported twice in the same scope by
import mM
and import mM
Quelle est la solution la plus élégante? Dois-je changer logsumexp() à une autre classe?
Merci =)
Utilisez-vous Scala 2.7? Je l'ai testé sous 2.8 et ça marche bien. –
En effet, j'utilise Scala 2.7 =) –
Cela ne répond pas à la question initiale, mais pourquoi lancez-vous un 'Iterable [Double]' en 'Matrix' avec' asInstanceOf' au lieu de simplement prendre un 'Matrix' comme argument? –