Je faisais un constructeur avec plusieurs arguments possibles, lorsque j'ai réalisé que mon IDE indiquait une divergence de type: donc j'ai essayé de passer le col em> fonction. p> Ça fonctionne, puis, essayant de comprendre pourquoi, j'ai fini par: p> donc donc je découvert que le passage d'une fonction anonyme aux méthodes telles que alors comment Est-ce que je fais def this(path: String, column: String) {
this(path, column.split(",").map(_ => {
col(_)
}))
}
3 Réponses :
Ce que vous faites passe à la carte Une fonction anonyme renvoie une autre fonction avec type String => Colonne. Vous devez supprimer l'espace réservé _ de la partie gauche de votre fonction littérale ou utilisez un nom d'argument explicite. P>
La réponse simple est que vous remplacez avec p> le problème est que vous traitez Le premier Le second _ code> est un identifiant de variable normal, mais ce n'est pas le cas. Les deux utilisations de _ code> dans la première expression sont complètement indépendantes. P> _ code> est un espace réservé pour l'argument à une fonction anonyme. La syntaxe _ => ... code> signifie que vous définissez une fonction mais n'utiliserez pas l'argument sur cette fonction lors du calcul du résultat. P> _ < / Code> est un espace réservé pour l'argument sur col code>. La syntaxe col (_) code> tourne la méthode col code> dans une fonction libre. P> p>
Ah, mon problème est venu de ne pas comprendre correctement ce que _ faisait ici ... Je laisserai ma question et le lien en double juste au cas où une personne tombe dans le même problème, afin qu'ils puissent être signalés dans la bonne direction. Acclamations!
Les deux souligneurs dans
.map(col)
En double possible de Quelles sont toutes les utilisations d'un soulignement dans Scala?