Je suis nouveau dans Scala, j'ai une fonction (qui fonctionne) dans un fichier différent, j'utilise cette fonction avec succès, mais lorsque je l'insère dans un filtre Ça me donne une erreur p> L'erreur que je reçois est: p> n'importe quelle idée ce que je fais ce que je fais mal? p> p>
3 Réponses :
Si vous avez remarqué que le filtre ce qui signifie que votre fonction de filtre sur Exemple: P> code> prend un prédicat list [somédata] code> devrait être Somedata => booléen code>. P> scala> def fun(param1: String, param2: String): Boolean = param1 == param2
fun: (param1: String, param2: String)Boolean
scala> List("updupd", "whatwhat").filter(p => fun(p, "updupd"))
res0: List[String] = List(updupd)
Je ne sais pas comment vous pouvez utiliser Func code> dans un endroit différent car le type de retour est faux. Il devrait être booléen code>:
Vous avez trois problèmes ici (que je peux voir comme la question est actuellement écrite):
Func code> ne compile pas. Vous avez mis le type de retour de la fonction sous la forme code> code>, mais vous retournez un booléen code> (vrai). Soit changer le type de retour ou mettre fin à la fonction en renvoyant une chaîne. Li>
-
.filter (...) code> nécessite que vous fassiez quelque chose de vrai ou de faux. Cela sera corrigé si vous modifiez le type de retour de Func code> pour être booléen code>. Si votre type de retour est supposé em> pour être string code>, vous devez comparer que chaîne code> à quelque chose. Par exemple: p>
XXX PRE> LI>
-
Votre erreur d'inadéquation est parce que vous semblez passer à une chaîne code> dans votre fonction code> FUNC code> dans laquelle il s'attend à un aucun.type code> (pour une raison quelconque). p> li>
ol> Ce que je vais, est que vous n'avez pas réussi à nous donner un exemple minimal, complet et vérifiable A >. J'ai débogué votre code comme vous l'avez présenté em>, mais j'ai un sentiment fort que vous avez essayé de réduire votre fonction réelle à un point où vos erreurs (et la fonction elle-même) n'ont aucun sens. p> p>
merci, j'ai utilisé votre deuxième option et cela fonctionne d'une manière ou d'une autre et corrigé mon incompatibilité de type
Pourquoi votre Func retourne-t-il une chaîne?
Cette fonction ne compile pas. Modifiez le type de retour à
boolean code>Quel est le type des éléments de la liste?
Votre fonction ne fonctionne pas i>. Il n'y a pas de conversion implicite automatique entre booléens et chaîne.
Je pense que vous êtes trop nouveau à Scala, mais le filtre prend un prédicat et votre fonction renvoie la chaîne.