Scala - Fonctions

Une fonction est un groupe d'instructions qui exécutent une tâche. Vous pouvez diviser votre code en fonctions distinctes. La façon dont vous divisez votre code entre différentes fonctions dépend de vous, mais logiquement, la division consiste généralement à ce que chaque fonction effectue une tâche spécifique.

Scala a à la fois des fonctions et des méthodes et nous utilisons les termes méthode et fonction de manière interchangeable avec une différence mineure. Une méthode Scala est une partie d'une classe qui a un nom, une signature, éventuellement des annotations et du bytecode où en tant que fonction dans Scala est un objet complet qui peut être assigné à une variable. En d'autres termes, une fonction, qui est définie comme membre d'un objet, est appelée une méthode.

Une définition de fonction peut apparaître n'importe où dans un fichier source et Scala autorise des définitions de fonction imbriquées, c'est-à-dire des définitions de fonction dans d'autres définitions de fonction. Le point le plus important à noter est que le nom de la fonction Scala peut avoir des caractères tels que +, ++, ~, &, -, -, \, /,:, etc.

Déclarations de fonction

Une déclaration de fonction Scala a la forme suivante -

def functionName ([list of parameters]) : [return type]

Les méthodes sont implicitement déclarées abstraites si vous n'utilisez pas le signe égal et le corps de la méthode.

Définitions des fonctions

Une définition de fonction Scala a la forme suivante -

Syntaxe

def functionName ([list of parameters]) : [return type] = {
   function body
   return [expr]
}

Ici, return type peut être n'importe quel type de données Scala valide et list of parameterssera une liste de variables séparées par des virgules et la liste des paramètres et le type de retour sont facultatifs. Très similaire à Java, unreturnL'instruction peut être utilisée avec une expression dans le cas où la fonction renvoie une valeur. Voici la fonction qui ajoutera deux entiers et retournera leur somme -

Syntaxe

object add {
   def addInt( a:Int, b:Int ) : Int = {
      var sum:Int = 0
      sum = a + b
      return sum
   }
}

Une fonction qui ne renvoie rien peut renvoyer un Unit c'est équivalent à voiden Java et indique que la fonction ne renvoie rien. Les fonctions qui ne renvoient rien dans Scala, ce sont des procédures.

Syntaxe

Voici la syntaxe -

object Hello{
   def printMe( ) : Unit = {
      println("Hello, Scala!")
   }
}

Fonctions d'appel

Scala fournit un certain nombre de variations syntaxiques pour appeler des méthodes. Voici la manière standard d'appeler une méthode -

functionName( list of parameters )

Si une fonction est appelée en utilisant une instance de l'objet, nous utiliserions la notation par points similaire à Java comme suit -

[instance.]functionName( list of parameters )

Essayez l'exemple de programme suivant pour définir puis appeler la même fonction.

Exemple

object Demo {
   def main(args: Array[String]) {
      println( "Returned Value : " + addInt(5,7) );
   }
   
   def addInt( a:Int, b:Int ) : Int = {
      var sum:Int = 0
      sum = a + b

      return sum
   }
}

Enregistrez le programme ci-dessus dans Demo.scala. Les commandes suivantes sont utilisées pour compiler et exécuter ce programme.

Commander

\>scalac Demo.scala
\>scala Demo

Production

Returned Value : 12

Les fonctions Scala sont au cœur de la programmation Scala et c'est pourquoi Scala est considérée comme un langage de programmation fonctionnel. Voici quelques concepts importants liés aux fonctions Scala qui devraient être compris par un programmeur Scala.

Fonctions Appel par nom Fonctions avec des arguments nommés
Fonction avec des arguments variables Fonctions de récursivité
Valeurs des paramètres par défaut Fonctions d'ordre supérieur
Fonctions imbriquées Fonctions anonymes
Fonctions partiellement appliquées Fonctions de curry