とりあえず話題のScalaを触ってみたメモをいろいろ。
関数型言語ということなのでまずはそのあたりから。
object FuncSample { def main(args: Array[String]) { val func1 = sum _; println(func1(1,2)); } def sum(val1: Int, val2: Int) : Int = { val1 + val2; } }
インスタンスを作れるクラスはJava同様 classで定義するのだが、
Javaでいうところのstaticな関数はobjectの中に定義する。
メソッドを定義する際には、「{」の前に=をつけるみたいだが、戻り値のないものは省略できる。
定義した関数を「関数として」参照する場合には関数名に「_」をつける。
でそれを変数に代入して呼び出すことができる。
もちろん実行結果は、
3上の例で
var func1 = sum _;の部分は、変数の型が省略されている。
省略しないでちゃんと書くなら、
var func1 : (Int,Int) => Int = sum _;となる。
関数の型を記述する場合には、
「(変数の型のリスト) => 戻り値の型」
と書く。
インスタンスメソッドを関数として参照する場合にはこんな感じ。
object FuncSample { def main(args: Array[String]) { val fs: FuncSample = new FuncSample; val func1 : (Int,Int) => Int = fs.sum _; println(func1(1,2)); } } class FuncSample { def sum(val1: Int, val2: Int) : Int = { val1 + val2; } }
ふむ。
0 件のコメント:
コメントを投稿