スカラ関数


関数は、タスクを一緒に実行するステートメントのグループです。 コードをさまざまな関数に分割できます。コードをさまざまな関数にどのように分割するかはユーザー次第ですが、論理的には通常、分割は特定のタスクを実行する各関数に基づいて行われます。

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) 関数パラメータ名の指定
関数 - 変数パラメータ再帰関数
デフォルトパラメータ値高階関数
インライン関数匿名機能
一部適用関数関数カリー化