Scala言語の高次関数(4)


=>>共通関数の説明
----->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