Ceci fonctionne: et cela fonctionne: p> 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 Réponses :
Je pense que vous devez garder la demande. La raison est que triée 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). p> p>
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) code>: la première parens n'empêche pas l'abs de recevoir son argument. La même chose est vraie pour trié code>, il s'attend donc à ce que l'ARG pour sa liste d'arguments avec l'implicitement. Belle solution de contournement de Saw, BTW.
Le paramètre requis peut être fourni de cette façon:
List(3, 1, 2).sorted(implicitly[Ordering[Int]])(1)
Ceci fonctionne: P>
Mais je ne suis pas sûr de savoir s'il est beaucoup plus pratique d'utiliser que: p>
J'irais quand même. P> (répertorié (3, 1, 2) .sorted _) (1) code>, p>
répertorié (3, 1, 2) .sorte Appliquer 1 code>. P>
En fait, mon plan est de l'attribuer à une variable - c'est lisible i>, où appliquer code> est simplement particulier.
Le plus court que vous pourriez le faire - pas sans une petite pénalité de performance, cependant - est si vous pouvez accepter un autre caractère, cela pourrait être plus agréable: <> code> ressemble à des parens quand même et peut être lu comme "Veuillez remplir les paramètres implicites comme d'habitude": p>
Trié CODE> 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 surtrié code> 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) code>, qui fonctionne bien. Malheureusement, je ne sais pas s'il y a une solution.Avez-vous essayé la liste
(3, 1, 2) .sorted () (1) code>?@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)