Scalaのメソッド定義
Scalaのメソッド定義は、大きく分類して2種類ある。
Java等と同様の普通の形式と、関数型の処理としての形式である。
それぞれメソッド形式と関数型形式とすると、次のような感じ。
- メソッド形式
def met01(x:int, y:int):String = {"met01(int,int) " + x + y}
- 関数型形式
def met02:(int, int)=>String = {(x, y) => "met02(int,int) " + x + y}
さらに関数型形式では、def以外のvarもvalも使えるみたいだ。
よって、同じようなことをするのに4つも記述方法があることになる。
これらが微妙に性質が異なるようだ。
ややこしい。
まとめると次の用になる。
- メソッド形式
def met01(x:int, y:int):String = {"met01(int,int) " + x + y}
- defによる関数型形式
def met02:(int, int)=>String = {(x, y) => "met02(int,int) " + x + y}
- varによる関数型形式
var met03:(int, int)=>String = {(x, y) => "met03(int,int) " + x + y}
- valによる関数型形式
val met04:(int, int)=>String = {(x, y) => "met04(int,int) " + x + y}
これらの性質の違いを確認する。
| 1 | 2 | 3 | 4 |
オーバーロード | ◯ | × | × | × |
上書き※ | × | × | ◯ | × |
※オーバーライドではなく、別の処理を代入してしまうこと。