Scala言語の高次関数(4)
=>>共通関数の説明
----->mapはリスト内の各要素に作用する
----->filterフィルタ戻り値Falseの要素
----->zip 2つの配列を結合
----->partitionフィルタルールに合致する要素を1つのパーティションに配置し、フィルタルールに合致しない要素を別のパーティションに配置する
----->findリストの最初のルールに合致する要素を見つけます
----->flattenフラット操作で、3 D配列を2 D配列に変換したり、2 D配列を1 D配列に変換したりします.変換するときは、各要素が抽出されることを保証しなければなりません.そうしないと、エラーが発生します.
----->flatMapはMapとflattenの2つの機能の結合体に相当する
=>閉パッケージ関数のネスト
----->一般関数の定義:
----->閉パッケージ採用
=>>コリーは数学者の名前を付け、その本質は多パラメータ関数を関数チェーンに変換し、各ノードに単一パラメータの関数がある.
例:
----->mapはリスト内の各要素に作用する
//
val list= List(1,2,3,4,5,6,7,8,9)
// list 2
list.map((i:Int) => i*2)
// foreach ,foreach
list.foreach((i:Int) => i*2)
----->filterフィルタ戻り値Falseの要素
val list = List(1,2,3,4,5,6,7,8,9)
list.filter((i:Int) => i%2==0)
// :List[Int] = List(2, 4, 6, 8)
//
num.filter(_%2==0)
----->zip 2つの配列を結合
List(1,2,3).zip(List(4,5,6))
//
List[(Int, Int)] = List((1,4), (2,5), (3,6))
----->partitionフィルタルールに合致する要素を1つのパーティションに配置し、フィルタルールに合致しない要素を別のパーティションに配置する
List(1,2,3,4,5,6,7,8,9).partition((i:Int) => i%2==0)
// :(List[Int], List[Int]) = (List(2, 4, 6, 8),List(1, 3, 5, 7, 9))
----->findリストの最初のルールに合致する要素を見つけます
----->flattenフラット操作で、3 D配列を2 D配列に変換したり、2 D配列を1 D配列に変換したりします.変換するときは、各要素が抽出されることを保証しなければなりません.そうしないと、エラーが発生します.
List(List(1,List(2,3,4)), List(List(5,6,7),List(8,9))).flatten
// ,
List(List(1,List(2,3,4)), List(List(5,6,7),List(8,9))).flatten.flatten
error:
:12: error: No implicit view available from Any => scala.collection.GenTraversableOnce[B].
List(List(1,List(2,3,4)), List(List(5,6,7),List(8,9))).flatten.flatten
// ,
List(List(List(1),List(2,3,4)), List(List(5,6,7),List(8,9))).flatten.flatten
// :List[Int] = List(1, 2, 3, 4, 5, 6, 7, 8, 9)
----->flatMapはMapとflattenの2つの機能の結合体に相当する
val list = List(List(1,2,3),List(4,5,6))
// x flatten ,
list.flatMap(x=>x.map(_*2))
//
val x = list.flatten
x.map(_*2)
=>閉パッケージ関数のネスト
----->一般関数の定義:
def myfun(x:Int, y:Int):Int = x * y
----->閉パッケージ採用
// , ,x , : ( ),y
def myfun(x:Int)=(y:Int) => x * y
//
val mytest = myfun(2)
// ,
mytest(20)
=>>コリーは数学者の名前を付け、その本質は多パラメータ関数を関数チェーンに変換し、各ノードに単一パラメータの関数がある.
例:
def add(x:Int, y:Int):Int = x + y
def add(x:Int)(y:Int) = x + y