スカラ関数
関数は、タスクを一緒に実行するステートメントのグループです。 コードをさまざまな関数に分割できます。コードをさまざまな関数にどのように分割するかはユーザー次第ですが、論理的には通常、分割は特定のタスクを実行する各関数に基づいて行われます。
Scala には関数とメソッドがあり、この 2 つの意味上の違いは非常に小さいです。 Scala メソッドはクラスの一部ですが、関数は変数に割り当てることができるオブジェクトです。つまり、クラス内で定義された関数はメソッドです。
関数内(インライン関数)であっても、どこにでも関数を定義できます。さらに重要な点は、Scala 関数名には次の特殊文字を含めることができるということです: +、++、~、&、-、--、, /、: など。
関数宣言
Scala関数の宣言形式は以下の通りです:
def functionName ([参数列表]) : [return type]
等号とメソッド本体を記述しない場合、メソッドは暗黙的に「abstract」として宣言され、それを含む型も抽象型。
関数定義
メソッド定義は def キーワードで始まり、オプションのパラメーター リスト、コロン「:」、メソッドの戻り値の型、等号「=」、そして最後にメソッドの本体が続きます。
Scala 関数の定義形式は次のとおりです:
def functionName ([参数列表]) : [return type] = { function body return [expr] }
上記のコードでは、戻り値の型 は、任意の有効な Scala データ型にすることができます。パラメータ リスト内のパラメータはカンマで区切ることができます。
次の関数の機能は、2 つの受信パラメータを追加してそれらを合計することです:
object add{ def addInt( a:Int, b:Int ) : Int = { var sum:Int = 0 sum = a + b return sum } }
関数が値を返さない場合は、Java の void に似た Unit として返すことができます。例は次のとおりです:
object Hello{ def printMe( ) : Unit = { println("Hello, Scala!") } }
関数呼び出し
Scala は関数を呼び出すためのさまざまな方法を提供します:
以下はメソッド呼び出しの標準形式です:
functionName( 参数列表 )
関数が呼び出しにインスタンス オブジェクトを使用する場合、 Java のような形式を使用できます ( . 数値を使用):
[instance.]functionName( 参数列表 )
上記の例は、関数の定義と呼び出しを示しています:
object Test { 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 } }
上記のコードを実行すると、出力結果は次のようになります:
$ scalac Test.scala $ scala Test Returned Value : 12
Scala も同様です関数型言語であるため、関数は Scala 言語の中核となります。次の関数概念は、Scala プログラミングをより深く理解するのに役立ちます:
関数概念の分析とケーススタディ | ||
---|---|---|
関数の名前による呼び出し (Call-by-Name) | 関数パラメータ名の指定 | |
関数 - 変数パラメータ | 再帰関数 | |
デフォルトパラメータ値 | 高階関数 | |
インライン関数 | 匿名機能 | |
一部適用関数 | 関数カリー化 |