English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

方法与函数Scala

Scala a des méthodes et des fonctions, leurs différences sémantiques sont minimes. Une méthode en Scala est une partie de la classe, tandis qu'une fonction est un objet qui peut être assigné à une variable. En d'autres termes, une fonction définie dans une classe est une méthode.

Les méthodes en Scala sont similaires à celles de Java, une méthode est une partie de la classe.

Les fonctions en Scala sont des objets complets, les fonctions en Scala sont en réalité des objets de classes qui héritent de Traits.

Scala utilise val Les instructions peuvent définir des fonctions,def Définition de la méthode par une instruction.

class Test{
  def m(x: Int) = x + 3
  val f = (x: Int) => x + 3
}

Attention :Dans certaines traductions, la fonction (function) et la méthode (method) ne font pas de différence.

déclaration de la méthode

Le format de déclaration des méthodes Scala est le suivant :

def functionName([liste des paramètres]): [type de retour]

Si vous n'écrivez pas d'égalité et du corps de la méthode, la méthode sera déclarée implicitement commeabstrait (abstract)compris de son type, est également un type abstrait.

définition de la méthode

La définition de la méthode se compose d'un def Les mots-clés commencent, suivis de la liste optionnelle des paramètres, d'un deux-points : et du type de retour de la méthode, d'un égal =, et enfin du corps de la méthode.

Le format de définition des fonctions Scala est le suivant :

def functionName([liste des paramètres]): [type de retour] = {
   corps de la fonction
   return [expr]
}

Dans le code suivant : type de retour peut être de n'importe quel type de données Scala légal. Les paramètres de la liste peuvent être séparés par des virgules.

Les fonctions suivantes ajoutent les deux paramètres passés et calculent la somme :

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

Si la méthode ne renvoie aucune valeur, elle peut retourner Unitsimilaire à Java void, exemple suivant :

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

调用方法

Scala提供了多种不同的方法调用方式:

以下是调用方法的标准格式:

functionName( 参数列表 )

如果方法使用了示例的对象来调用,我们可以使用类似java的格式 (使用 . 号):

[instance.]functionName( 参数列表 )

以上示例演示了定义与调用方法的示例:

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

执行以上代码,输出结果为:

$ scalac Test.scala 
$ scala Test
Value Returned : 12

Scala也是一种函数式语言,因此函数是Scala语言的核心。以下一些函数概念有助于我们更好地理解Scala编程:

概念解析函数概念案例
调用传名函数(Call-by-Name)命名参数函数指定
函数 - 参数可变函数递归
值参数默认函数高阶
函数内嵌函数匿名
函数应用偏柯里化函数(Function Currying)