Archive

Archive for April 20th, 2010

Scala : Functions and Parameters

April 20th, 2010 leeing No comments

一个Function 是一个实例

在scala中,function是类的实例,所以在一个function上进行和类的实例一样的操作,下面创建了一个function并将它赋值给一个变量:

scala> val f:Int => String = x => "Dude: "+x
f: (Int) => String = <function1>

实际上它相当于:

scala> val f:(Int => String) = {  x=> "Dude :" +x }
f: (Int) => String = <function1>

可以在 f上调用方法:

scala> f.toString
res0: java.lang.String = <function1>

scala> f == f
res1: Boolean = true

scala> f == 4
res2: Boolean = false

用一个参数来apply function:

scala> f(44)
res3: String = Dude: 44

functions 作为参数传递

function能像任何其它参数那样被传递给方法。下面定义一个w42 方法,它接收一个输入为Int返回为String的function,在这里w42方法apply 42给函数,并返回結果。

scala> def w42(f: Int => String) = f(42)
w42: (f: (Int) => String)String

用函数变量来调用它:

scala> w42(f)
res11: String = Dude: 42

Read more…

Categories: Scala Tags: