Scalaの関数定義

 

こんにちはKUJIRAです。今日は関数定義についてのメモです。

 

Scalaの関数定義は「def」を使用して次のように定義を行います。

 

scala> def max(x: Int, y:Int): Int = {
    | if (x > y) x
    | else y
    | }
max: (x: Int, y: Int)Int

scala>

 

普通の関数定義と大きく違うのは関数名を記述した後に「=」を書き、その後本体を書いているところです。まるで関数を変数みたいに扱っております。こういった記述形式をとっているのも勉強しているうちに分かることなのでしょう。今は特に突っ込まずに行きます。この関数は複数行に渡るため中括弧を使っていますが、一行で済む場合は中括弧はいりません。また、「|」はScalaが勝手に出してくれるものなのでこちらで意識する必要はありません。

 

中括弧を外した例として先ほどの関数を1行で書いてみます。

 

scala> def max2(x: Int, y: Int): Int = if (x > y) x else y
max2: (x: Int, y: Int)Int

scala>

 

ここまでが関数定義です。定義した関数は以下のように実行します。

 

scala> max(3,5)
res0: Int = 5

scala> max2(3,5)
res1: Int = 5

 

ここで結果について見てみると「res0」という変数が勝手に出力されています。
これはscalaが出力結果を格納するために用意する変数でコンソールから抜けるまでは有効です。それが証拠に以下のようにすると「5」が出力されます。

 

scala> println(res0)
5

scala>

 

コンソールは対話式で先ほどのように結果を変数に格納してくれるので簡単な計算機みたいに使えます。まぁ、電卓使えよなりますがwww

 

以上が関数の定義方法です。今日のメモはここまでKUJIRAでした。