English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Scalaにはメソッドと関数がありますが、意味論的にはほとんど違いはありません。Scalaのメソッドはクラスの一部であり、関数は変数に割り当てられるオブジェクトです。他の言葉で言えば、クラス内で定義された関数はメソッドです。
ScalaのメソッドはJavaのものと似ています。メソッドはクラスの一部です。
Scalaの関数は完全なオブジェクトであり、Scalaの関数は実際にはTraitを継承したクラスのオブジェクトです。
Scalaでは val 文は関数を定義することもできます。def 文でメソッドを定義します。
class Test{ def m(x: Int) = x + 3 val f = (x: Int) => x + 3 }
注意:翻訳上、関数(function)とメソッド(method)には違いはありません。
Scalaメソッドの宣言形式は以下の通りです:
def functionName([引数リスト]): [戻り値型]
等号とメソッドの本体を書かない場合、メソッドは暗黙的に抽象(abstract)を含み、その型もまた抽象型となります。
メソッドの定義は、一つの def キーワードから始まり、オプションの引数リスト、一つのコロン :、メソッドの戻り値型、一つの等号 =、最後にメソッドの本体が続きます。
Scalaメソッドの定義形式は以下の通りです:
def functionName([引数リスト]): [戻り値型] = { function body return [expr] }
上記のコードでは 戻り値型 任意の合法なScalaデータ型でできます。引数リストの引数は、カンマで区切ることができます。
以下のメソッドは、引き渡された2つの引数を足し合わせて合計を求める機能を持っています:
object add{ def addInt( a:Int, b:Int ) : Int = { var sum:Int = 0 sum = a + b return sum } }
メソッドが戻り値を持たない場合、戻り値として Unit、これはJavaの void、例示として以下のようになります:
object Hello{ def printMe(): Unit = { println("Hello, Scala!") } }
Scalaは、さまざまなメソッドの呼び出し方法を提供しています:
以下は、メソッドの呼び出しの標準形式です:
functionName( 引数リスト )
メソッドが例のオブジェクトを使用して呼び出された場合、Javaの形式を使用できます(使用 . 号):
[instance.]functionName( 引数リスト )
上記の例は、メソッドの定義と呼び出しの例を示しています:
object Test { def main(args: Array[String]) { println( "返却値 : " + addInt(5,7) ); } def addInt( a:Int, b:Int ) : Int = { var sum:Int = 0 sum = a + b return sum } }
上記のコードを実行すると、以下の結果が得られます:
$ scalac Test.scala $ scala Test 返却値 : 12
Scalaは機能型言語であり、したがって関数はScala言語の核心です。以下のいくつかの機能概念は、Scalaプログラミングをよりよく理解するのに役立ちます:
関数の概念を解説し、例を示します | ||
---|---|---|
関数の名前付き呼び出し(Call-by-Name) | 指定関数パラメータ名 | |
関数 - 可変パラメータ | 再帰関数 | |
デフォルトパラメータ値 | 高階関数 | |
内嵌関数 | 匿名関数 | |
偏適用関数 | 関数カリング(Function Currying) |