8
votes

Comment puis-je "appliquer" aux résultats d'une fonction de paramètre moins

Ceci fonctionne: xxx pré>

et cela fonctionne: p> xxx pré>

mais cela ne fait pas: P>

(List(3, 1, 2).sorted)(1)

error: type mismatch;
 found   : Int(1)
 required: Ordering[?]
       (List(3, 1, 2).sorted)(1)


4 commentaires

Trié n'est pas paramétré: il faut un paramètre implicite, que vous pouvez laisser sortir. C'est le problème - votre (1) est interprété comme un paramètre explicite sur trié et non un paramètre sur la méthode d'application de sa valeur de retour, comme dans la liste (1, 2, 3). queue (0) , qui fonctionne bien. Malheureusement, je ne sais pas s'il y a une solution.


Avez-vous essayé la liste (3, 1, 2) .sorted () (1) ?


@MADOC: Cela ne fonctionne pas, vous ne pouvez pas laisser l'implicite en fournissant une liste de paramètres vide, le compilateur se plaint de paramètres non spécifiés.


Liste (3, 1, 2) .sorte (implicitement [commande [int]]) (1)


4 Réponses :


5
votes

Je pense que vous devez garder la demande. La raison est que triée n'est pas "paramétress", il est défini comme xxx

comme il s'agit d'un paramètre implicite, la commande [int] est normalement fournie automatiquement, Mais si vous utilisez des parens, le compilateur pense que vous souhaitez spécifier une autre commande [int] (disons à l'envers).


2 commentaires

Alors tu dis que je suis foutu? Pourquoi ne l'a pas envoyé dans l'aide de parens?


Parce que les parens ne changent rien ici. Considérez (math.abs) (- 1) : la première parens n'empêche pas l'abs de recevoir son argument. La même chose est vraie pour trié , il s'attend donc à ce que l'ARG pour sa liste d'arguments avec l'implicitement. Belle solution de contournement de Saw, BTW.



3
votes

Le paramètre requis peut être fourni de cette façon:

List(3, 1, 2).sorted(implicitly[Ordering[Int]])(1)


0 commentaires

6
votes

Ceci fonctionne:

(répertorié (3, 1, 2) .sorted _) (1) ,

Mais je ne suis pas sûr de savoir s'il est beaucoup plus pratique d'utiliser que:

répertorié (3, 1, 2) .sorte Appliquer 1 .

J'irais quand même.


1 commentaires

En fait, mon plan est de l'attribuer à une variable - c'est lisible , où appliquer est simplement particulier.



2
votes

Le plus court que vous pourriez le faire - pas sans une petite pénalité de performance, cependant - est xxx

si vous pouvez accepter un autre caractère, cela pourrait être plus agréable: <> ressemble à des parens quand même et peut être lu comme "Veuillez remplir les paramètres implicites comme d'habitude": xxx


0 commentaires