<font id="tbtdb"></font>

        <sub id="tbtdb"><delect id="tbtdb"></delect></sub>

          <progress id="tbtdb"></progress>
          <address id="tbtdb"></address><thead id="tbtdb"></thead>
          <font id="tbtdb"></font>

          <meter id="tbtdb"><cite id="tbtdb"><dl id="tbtdb"></dl></cite></meter>

          好程序員-千鋒教育旗下高端IT職業教育品牌

          400-811-9990
          我的賬戶
          好程序員

          專注高端IT職業培訓

          親愛的猿猿,歡迎!

          已有賬號,請

          如尚未注冊?

          [BigData] 好程序員大數據學習路線分享spark之Scala

          [復制鏈接]
          262 0
          好程序員大數據培訓分享sparkScala,基本語法:
          變量
          變量的定義:不可變:val a = 2  或者 val a : Int = 2 (指定了數據類型)  lazy val a : Int =2
          可變:var a = 2   或者 var a : Int = 2(指定了數據類型)
          def  a = 2
          定義變量不能1.以數字以及特殊符號(_除外)開頭 2.以關鍵字(varvalclass等)開頭
          def定義的是??
          var 編譯后有set get ?  所以可以重新賦值
          val 編譯后只有get方法  所以不能再賦值了
          lazy 惰性變量,只在該變量被調用的時候才實例化,而且后面只能跟val
          def val 差不多 不能重新賦值  更多修飾方法
          Scala變量的類型:Anyscala的頂級類型,Any下有AnyVal(值類型)和AnyRef(引用類型)兩個子類
          AnyVal : 它有9個類型,其中7個是指類型:Double  Float  Byte  Int  Short  Long  Char 和兩個非值類型:Unit  Boolean
          AnyRef : 是引用類型,它的子類有:List  Option 或者自定義的并繼承它的class
          所有的類型都需要首字母大寫
          Scala會自動推斷類型
          Scala數據類型可以從低到高轉換 Byte-Short-Int-Long-Float-Double
            Char-Int-Long-Float-Double
          注意:scala內沒有強轉
          操作符
          Scala里沒有操作符的概念,所謂的操作符其實都是方法
          數學運算:+ - * / : % .+ ( )   注:x+y x.+(y)等價
          關系:<  <=  >  >=  !  !=  ==
          位運算: | & ^
          如果兩個不一樣類型的變量進行運算,最終結果的類型是大的那個類型
          如果想要格式化輸出:var x =5   var y = 5
          var n =x + y
              print(sx+y=$n)   輸出結果 x+y=10
          當然也可以在結果前面加字符串x+y
          條件表達式
          這種打出來是空,因為else里不是一個值,而是一個賦值語句
          正常應該是 var res = if(sex == 1){}else{}
          因為大括號里只有一個‘表達式’,大括號可以省略
          var res = if(sex == 1)else
          for循環
          for(i<- 1 to 10){println (i)}                                          //打印1-10
                    for(i <- 1 until 10){println (i)}                                 //打印1-9
          val arr = Array(“java”,”scala”,”python”)                //定義一個數組
          for(i<- arr){println (i)}                                            //打印數組內容
                        for(i <- 1 to 3 ;j <- 1 to 3 if(i != j)){println(i*10+j)} //相當于雙層for循環
            val arr =for(i <- 1 until 10) yield (i)                        //0-9循環出來后封裝進arr集合
            val arr =for(i <- 1 until 10) yield (i*10)
            val res2 = for(i <- arr if i%2 == 0) yield i*100   //過濾
          val arrf = bf.filter(_ %2==0).map(_ *100)  //過濾  _ 是全部數據的意思  
            
          scala中不支持break語句,但在scala 2.8之后 可以利用Breaks方式來實現
          方法
          def  m1(x : Int , y : Int ) : Int = {x + y}        //三種聲明方式
          def m2(x:Int , y:Int) {print(x+y)}
          def m3(x:Int , y:Int){x+y}
          解釋:m1是方法名  xyint型的參數  括號外的int是返回值類型  x+y是方法
          調用:m1 (3,4)
          函數
          val f1 = (x:Int , y:Int) => x+y                //聲明
          val f1 = (x:Int , y:Int) =>{
          val sum = x+y
          sum*100} //最后一句作為函數的返回值   函數沒有返回值類型
          回車之后會看到
          f1: (Int, Int) => Int = <function2>
          這里的function2中的2指的是參數的個數
          調用:f1 (3,4)                //與方法的調用一致
          函數與方法的關系???
          我們通過一個案例來探討:
          首先創建一個方法:def func (yAge:Int,mAge:Int):String={
            val a : Boolean = yAge >= mAge
            val str : String = if(a) "哥哥" else "弟弟"
            str
          }
          我們發現這個條件可以做成一個函數:val m = ( yAge:Int , mAge:Int ) = >{yAge >= mAge}
          我們可以調用函數:def func1 (yAge:Int,mAge:Int):String={
            val a : Boolean = m(yAge,mAge)
            val str : String = if(a) "哥哥" else "弟弟"
          }
          我們也可以把函數當做一個參數傳入到方法中:
          def func1(yAge:Int,mAge:Int,f:(Int,Int) =>Boolean):String={
              var a= f(yAge,mAge)  或者var a :Boolean = f(yAge,mAge)
              val res : String=if(a)"哥哥" else "弟弟"
            res
          }
          調用: println(func1(18,20,m))
          好程序員大數據培訓官網:http://www.xn122.com/bigdata.shtml

          精彩內容,一鍵分享給更多人!
          收藏
          收藏0
          轉播
          轉播
          分享
          淘帖0
          支持
          支持0
          反對
          反對0
          回復

          使用道具 舉報

          您需要登錄后才可以回帖

          本版積分規則

          關注我們
          好程序員
          千鋒好程序員

          北京校區(總部):北京市海淀區寶盛北里西區28號中關村智誠科創大廈

          深圳西部硅谷校區:深圳市寶安區寶安大道5010號深圳西部硅谷B座A區605-619

          杭州龍馳智慧谷校區:浙江省杭州市下沙經濟技術開發區元成路199號龍馳智慧谷B座7層

          鄭州校區:鄭州市二七區航海中路60號海為科技園C區10層、12層

          Copyright 2007-2019 北京千鋒互聯科技有限公司 .All Right

          京ICP備12003911號-5 京公安網11010802011455號

          請您保持通訊暢通1對1咨詢馬上開啟

          电影韩国三级2019在线观看