2017-08-14 18 views
1

私はScalaを初めて使っていて、機能的なアプローチでもっと探求しようとしています。私はこの方法を書かれており、このような変数を定義している : - 今`Val`と` Def`を使用した高階関数

val list = 1 to 10 toList 

def getFilterList(list: List[Int],f:Int => Boolean): List[Int] = { 
    list.filter(f) 
} 

getFilterList(list, x => x %2 ==0) 

val oddHOF :Int => Boolean = value => value % 2 == 0 

list.filter(oddHOF) 

を、私の質問は、oddHOFgetFilterListは何と呼ばれていない場合は、両方oddHOFgetFilterListは、より高次の関数であるということですか?

答えて

1

Higher ordered functionは、パラメータとして機能する機能である。従って、getFilterListは、タイプがInt => Booleanの関数をパラメータとするので、より高次の関数である。

一方、oddHOFFirst class functionです。つまり、関数のリテラル構文で関数を表すことができます。例えばval oddHOF: Int => Boolean = (value:Int) => value % 2 == 0。ここで、関数のタイプはInt => Booleanであり、タイプIntの1つのパラメータをとり、booleanの値を返し、(value:Int) => value % 2 == 0function literalです。

+0

'getFilterList'はメソッドであり、関数ではありません(しかし、おそらくそれは不必要なヘア分割です)。 – jwvh

+0

@jwvh関数とメソッドの違いは何ですか? –

+1

@AkashSethi、多くの混乱の話題。長さ[ここ](https://stackoverflow.com/questions/2529184/difference-between-method-and-function-in-scala)と[here](https://stackoverflow.com/questions/4839537/)で議論された関数-vs-methods-in-scala)を使用します。 – jwvh

関連する問題