Qu'est-ce qu'une fonction littérale en Scala?
qu'est Ce qu'une fonction littérale de Scala et quand dois-je utiliser?
2 réponses
une fonction littérale est une syntaxe alternative pour définir une fonction. C'est utile lorsque vous voulez passer une fonction comme argument d'une méthode (en particulier d'un ordre supérieur, comme un pli ou une opération de filtrage), mais vous ne voulez pas définir une fonction distincte. Les littérales de fonction sont anonymes -- elles n'ont pas de nom par défaut, mais vous pouvez leur donner un nom en les liant à une variable. Une fonction littérale est définie comme suit:
(a:Int, b:Int) => a + b
vous pouvez lier les variables:
val add = (a:Int, b:Int) => a + b
add(1, 2) // Result is 3
comme je l'ai déjà dit, les littérales de fonction sont utiles pour passer comme arguments à des fonctions d'ordre supérieur. Ils sont également utiles pour définir les fonctions d'une seule couche ou d'un assistant imbriquées dans d'autres fonctions.
Un Tour de la Scala donne une assez bonne référence pour les littéraux de fonction (ils les appellent des fonctions anonymes).
il pourrait être utile de comparer les littérales fonctionnelles à d'autres genres de littérales en Scala. littérales sont du sucre notionnel pour représentant des valeurs de certains types que la langue considère comme particulièrement important. Scala a les littéraux entiers, chaînes de caractères, les littéraux de chaîne, etc. Scala traite les fonctions comme des valeurs de première classe que l'on peut représenter dans le code source par des fonctions littérales. Ces valeurs de fonction habitent spécial type de fonction . Par exemple,
-
5
est un entier littéral représentant une valeur dansInt
type -
'a'
est un caractère littéral représentant une valeur dansChar
type -
(x: Int) => x + 2
est une fonction littérale représentant une valeur dansInt => Int
type de fonction
les littérales sont souvent utilisées comme des valeurs anonymes, c'est, sans cadre à une variable nommée premier. Cela aide à rendre le programme plus concis et est approprié lorsque le littéral n'est pas censé être réutilisable. Par exemple:
List(1,2,3).filter((x: Int) => x > 2)
vs.
val one: Int = 1
val two: Int = 2
val three: Int = 3
val greaterThan2: (Int => Int) = (x: Int) => x > two
List(one,two,three).filter(greaterThan2)