Je suis nouveau à Scala. J'ai besoin de comprendre une idée de base.
En scala, nous avons carte, filtre, groupePar etc.
Sont-ils des fonctions? ou sont-ils des méthodes?
Réponses:
5 pour la réponse № 1Ce sont des méthodes. Voir, par exemple la scala.collection.GenTraversableLike.map
méthode.
Il n’existe pas vraiment de fonctions dans le langage Scala Core.
Fondamentalement, le support des fonctions dans Scala est similaire à Java: tout objet ayant une méthode appelée apply
, peut être utilisé comme une "fonction". Il y a un certain nombre de traits dans la bibliothèque standard de Scala, appelée Function0[+R]
, Function1[-T1, +R]
, Function2[-T1, -T2, +R]
, Function3[-T1, -T2, -T3, +R]
, etc., qui peuvent être instanciés en utilisant une syntaxe littérale spéciale comme celle-ci:
val fn = (i: Int, j: Int) => i + j
Il y a deux idées sur ce que signifie être une "fonction" dans Scala:
- l'étroit: une instance de l'un des
FunctionN
traits, ou - le général: tout objet qui a un
apply
méthode.
map
, filter
, groupBy
ne sont ni des objets, ni des objets. Ce sont des méthodes.
0 pour la réponse № 2
Ce sont des fonctions d'ordre supérieur fournies par de nombreuses classes Scala et peuvent être utilisées pour composer d'autres fonctions.
http://docs.scala-lang.org/tutorials/tour/higher-order-functions.html
Ces fonctions d'ordre supérieur peuvent être des méthodes si (à partir de Scala doc) "Une méthode est une fonction membre de quelque classe, trait ou objet singleton."