<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                **高階函數:** 可以將其他函數作為參數,或者將其它函數作為返回值的函數稱為高階函數。 ```scala // 函數作為參數 def doSquare(f:Int => Int, p:Int) = f(p) def square(x:Int):Int = x*x // 調用 doSquare(square, square(2)) // 函數作為返回值 // 返回類型為 (Int => Int) 函數 def doSquare()= { (x:Int) => x * x } doSquare()(2) ``` <br/> **常用的內置高階函數:** ```scala map foreach filter fold、foldLeft、foldRight reduce zip flatten flatMap ``` ```scala object HighLevelFun { def main(args: Array[String]): Unit = { val list = List(1, 2, 3, 4, 5) // map操作, 對一個集合/迭代器里邊的每一個值進行遍歷, 生成一個新的集合/迭代器作為返回值返回 val maped:List[Int] = list.map(x => x * 2) // List(2, 4, 6, 8, 10) // foreach操作, 對一個集合/迭代器里邊的每一個值進行遍歷, 用于輸出 maped.foreach(println) // 2 4 6 8 10 maped.foreach(x => println(x)) // 2 4 6 8 10 // map與foreach合并 // 個別情況下, 可以使用_代替參數, 有限制: 適用于參數只用到一次的情況 // 個別情況下, 可以省略括號里的東西 list.map(_*2).foreach(println) // 2 4 6 8 10 // filter操作, 對一個集合/迭代器里邊的每一個值進行遍歷, 根據條件表達式進行判斷, // 條件滿足的留下, 不滿足的過濾掉生, 成一個新的集合/迭代器作為返回值返回 val list2 = List(1, 2, 3, 4, 5) val filtered:List[Int] = list2.filter(_%2==1) filtered.foreach(x => print(s"$x ")) // 1 3 5 // fold操作, 對一個集合/迭代器里邊的每一個值進行遍歷, // 每次取兩個值進行運算, 得到的結果參加下一次運算, 最終返回一個結果值 val sum1:Int = list2.fold(0)((x, y)=>x-y) // fold的源碼就是foldLeft val sum2:Int = list2.foldLeft(0)((x,y)=>x-y) /* foldLeft或fold的計算步驟如下: 0-1=-1 -1-2=-3 -3-3=-6 -6-4=-10 -10-5=-15 */ val sum3:Int = list2.foldRight(0)((x,y)=>x-y) /* foldRight的計算步驟如下: // 5-0=5 // 4-5=-1 // 3-(-1)=4 // 2-4=-2 // 1-(-2)=3 */ println(sum1, sum2, sum3) // (-15,-15,3) // reduce操作, 對一個集合/迭代器里邊的每一個值進行遍歷, // 每次取兩個值進行運算, 得到的結果參加下一次運算, 最終返回一個結果值 val list3 = List(1, 2, 3, 4, 5) val reduced:Int = list3.reduce(_+_) // reduced2與reduced寫法的一樣的結果 val reduced2:Int = list3.reduce((x, y)=> x+y) println(reduced) // 15 println(reduced2) // 15 // zip操作, 拉鏈函數, 將兩個函數一一對應的合在一起, 返回一個元組的集合 val strList = List("a", "b", "c", "d", "e") val intList = List(1, 2, 3, 4) val tuples:List[(String, Int)] = strList.zip(intList) tuples.foreach(println) // (a,1) (b,2) (c,3) (c,3) // flatten操作, 扁平化, 將嵌套的集合壓平, 直接將里邊的元素放在最外層的集合里 val strings = List("hello world","spark python scala") strings.map(x=>x.split(" ")).flatten.foreach(println) // hello world spark python scala // flatMap操作, 先進行map操作, 在進行flatten操作, 參數為map函數需要的參數 strings.flatMap(_.split(" ")).foreach(println) // // hello world spark python scala // Wordcount 演示 val wordCounts = List("hello hello world world","spark java spark hello python scala") wordCounts.flatMap(_.split("\\s+")).map((_, 1)).groupBy(_._1).map(x=>(x._1,x._2.size)).foreach(println) // (world,2) (java,1) (spark,2) (scala,1) (python,1) (hello,3) } } ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看