-1
votes

Fonction Scala à l'intérieur d'une boucle de filtre ne fonctionne pas (incompatibilité de type)

Je suis nouveau dans Scala, j'ai une fonction (qui fonctionne) xxx

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 xxx

L'erreur que je reçois est: xxx

n'importe quelle idée ce que je fais ce que je fais mal?


5 commentaires

Pourquoi votre Func retourne-t-il une chaîne?


Cette fonction ne compile pas. Modifiez le type de retour à boolean


Quel est le type des éléments de la liste?


Votre fonction ne fonctionne pas . 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.


3 Réponses :


2
votes

Si vous avez remarqué que le filtre code> prend un prédicat xxx pré>

ce qui signifie que votre fonction de filtre sur list [somédata] code> devrait être Somedata => booléen code>. P>

Exemple: 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)


0 commentaires

1
votes

Je ne sais pas comment vous pouvez utiliser Func dans un endroit différent car le type de retour est faux. Il devrait être booléen : xxx


0 commentaires

4
votes

Vous avez trois problèmes ici (que je peux voir comme la question est actuellement écrite):

  1. Votre fonction Func ne compile pas. Vous avez mis le type de retour de la fonction sous la forme , mais vous retournez un booléen (vrai). Soit changer le type de retour ou mettre fin à la fonction en renvoyant une chaîne.
  2. .filter (...) nécessite que vous fassiez quelque chose de vrai ou de faux. Cela sera corrigé si vous modifiez le type de retour de Func pour être booléen . Si votre type de retour est supposé pour être string , vous devez comparer que chaîne à quelque chose. Par exemple: XXX

  3. Votre erreur d'inadéquation est parce que vous semblez passer à une chaîne dans votre fonction FUNC dans laquelle il s'attend à un aucun.type (pour une raison quelconque).

    Ce que je vais, est que vous n'avez pas réussi à nous donner un exemple minimal, complet et vérifiable . J'ai débogué votre code comme vous l'avez présenté , 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.


1 commentaires

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