大資料數列修鍊-Scala課程07

來源:互聯網
上載者:User

標籤:

由於昨天下班後有點困,就沒有來及寫部落格,今天會把它補上!把這個習慣堅持下去!

關於Scala高階函數詳解

  1.Scala高階函數代碼實現:高階函數就是在我們函數中套用函數

  2.高階函數代碼詳解:高階函數能夠讓方法的調用更加便捷

  println("Welcome to the Scala worksheet")       //> Welcome to the Scala worksheet    //(1 to 9)數組中的map方法向數組中放* 用foreach用於來迴圈 println _ 表示函數,把函數當做參數進行傳遞  (1 to 9).map("*" * _).foreach(println _)        //> *                                                  //| **                                                  //| ***                                                  //| ****                                                  //| *****                                                  //| ******                                                  //| *******                                                  //| ********                                                  //| *********  //過濾後被2整除的遍曆  println也當做參數進行傳遞這就是高階函數  (1 to 9).filter(_ % 2 == 0) .foreach(println)   //> 2                                                  //| 4                                                  //| 6                                                  //| 8  //_*_代表數組中兩個資料相乘 也屬於高階函數  println((1 to 9).reduceLeft(_ * _))             //> 362880  //把字串用空格分割在按照長度排序   "Spark is the most exciting thing happening in big data today".split(" ").        sortWith(_.length < _.length).foreach(println)                                                  //> is                                                  //| in                                                  //| the                                                  //| big                                                  //| most                                                  //| data                                                  //| Spark                                                  //| thing                                                  //| today                                                  //| exciting                                                  //| happening   //ceil函數表示向上取值   val fun = ceil _                               //> fun  : Double => Double = <function1>   val num = 3.14                                 //> num  : Double = 3.14   fun(num)                                       //> res0: Double = 4.0   Array(3.14, 1.42, 2.0).map(fun)//fun函數當做函數傳遞   //> res1: Array[Double] = Array(4.0, 2.0, 2.0)   //函數表示三的倍數    val triple = (x: Double) => 3 * x             //> triple  : Double => Double = <function1>    Array(3.14, 1.42, 2.0).map((x: Double) => 3 * x)                                                  //> res2: Array[Double] = Array(9.42, 4.26, 6.0)    Array(3.14, 1.42, 2.0).map{ (x: Double) => 3 * x }                                                  //> res3: Array[Double] = Array(9.42, 4.26, 6.0)    //定義高階函數    def high_order_functions(f: (Double) => Double) = f(0.25)                                                  //> high_order_functions: (f: Double => Double)Double    println(high_order_functions(ceil _))         //> 1.0    println(high_order_functions(sqrt _))         //> 0.5    //函數相乘    def mulBy(factor: Double) = (x: Double) => factor * x                                                  //> mulBy: (factor: Double)Double => Double    val quintuple = mulBy(5)                      //> quintuple  : Double => Double = <function1>    println(quintuple(20))                        //> 100.0         //3的倍數解析    println(high_order_functions((x: Double) => 3 * x))                                                  //> 0.75    high_order_functions((x) => 3 * x)            //> res4: Double = 0.75    high_order_functions(x => 3 * x)              //> res5: Double = 0.75        println(high_order_functions(3 * _))          //> 0.75        val fun2 = 3 * (_: Double)                    //> fun2  : Double => Double = <function1>    val fun3: (Double) => Double = 3 * _          //> fun3  : Double => Double = <function1>
Scala中SAM轉換講解

  1.SAM的意義:隱式的轉換

  2.SAM轉換詳解

 

  var data = 0  val frame = new JFrame("SAM Testing");  val jButton = new JButton("Counter")  jButton.addActionListener(new ActionListener {    override def actionPerformed(event: ActionEvent) {      data += 1      println(data)    }  })  //隱式函數就把一些函數定義,好比java中的函數定義模組-->這就可以隱式轉換  implicit def convertedAction(action: (ActionEvent) => Unit) =     new ActionListener {      override def actionPerformed(event: ActionEvent) { action(event) }    }  //這樣是寫代碼的時候只關心商務邏輯,沒有必要去編寫沒有關係的代碼,直接寫所需的結果    jButton.addActionListener((event: ActionEvent) => {data += 1; println(data)})    //這跟java中的gui編程一樣      frame.setContentPane(jButton);       frame.pack();      frame.setVisible(true);  

 

 

Scala中curring講解

  1.curring的定義:curring顆粒度,就是把參數簡化成一個參數進行操作,返回後把另外進行計算

  2.curring在項目中重要性:在公式的推到中和計算中相當重要

 

    //curring顆粒度,就是把參數簡化成一個參數進行操作,返回後把另外進行計算    def multiple(x: Int, y: Int) = x * y    def multipleOne(x: Int) = (y: Int) => x * y    println(multipleOne(6)(7))    //可以把以上的計算方式該項為下面的方法    def curring(x: Int)(y: Int) = x * y        println(curring(10)(10))    val a = Array("Hello", "Spark")    val b = Array("hello", "spark")    //比較兩個變數的是否相等    println(a.corresponds(b)(_.equalsIgnoreCase(_)))

 

 

Scala中模式比對入門講解

  1.模式比對分析:Scala中匹配模式比較靈活,可以傳入參數和函數等

  2.在模式比對中使用守衛:接下的blog中會深入講解

  3.模式比對中的變數使用

 

  //模式比對在java中用switch來表示,這裡面限制不是很多,int,byte,char,short   val data =2    data match {      case 1 => println("First")      case 2 => println("Second")      case _ => println("Not Known Number")    }    //Scala中case中可以用條件函數也可以是函數,也可以傳參數    val result = data match {    case i if i == 1 => "The First"    case number if number ==2 => "The Second" + number    case _ => "Not Known Number"    }    println(result)      "Spark !" foreach { c => println (      c match {        case ‘ ‘ => "space"        case ch => "Char: " + ch      }      )}

 

這就是拖欠任務,今天會再寫一篇關於Scala的學習!希望大家關注王家林老師的(18610086859),他會每天都更新大資料的視頻!

最新大資料視頻74講:http://pan.baidu.com/s/1hqJByvU

本文百度雲地址23-26講:http://pan.baidu.com/s/1bOsSQ

 

大資料數列修鍊-Scala課程07

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.