国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Scala(一)

2019-11-08 02:21:24
字體:
來源:轉載
供稿:網友
package learn.scalaimport org.apache.spark.SparkConf//scala中 object 與 class的區別object Scala1 {   def main(args: Array[String]): Unit = {        //1. 定義變量    //沒有指定msg的類型,那么Scala會自動根據 "Hello,World!"的類型來推斷 msg的類型    val msg="Hello,World!"    PRintln(msg);        //指定類型    val msg2:String="Hello,World!"    val msg3:java.lang.String="Hello,World!"    println(msg3);        //val類型不能重新賦值    //scala> msg2 = "Goodbye cruel world!"    //<console>:5: error: reassignment to val    //             msg2 = "Goodbye cruel world!"            var greeting="Hello,World!"    greeting="Leave me alone,world!"    println(greeting);        //println(1+2);        //val acc=new Scala2    //acc.add(12)    //println(acc.checksum())        //println(f());  //輸出結果為 ()    //println(g());  //輸出結果為 ()    //println(h());  //輸出結果為 this string gets lost        //println(max(1,2))    //println(max2(23,3))    //println(greet)    //println(greet2)        //3. 循環    // while循環,if判斷    var i=0    while(i<10){      println(i)      i+=1    }    //i++ ++i 在scala中是無效的            // foreach,for    var str:Array[String]=new Array[String](10);    //------foreach方法給() 或者{} 都可以    Array[String]("concise","is","nice").foreach(arg=>println(arg))    //------arg如果要指定類型的話,要加上小括號()    Array[String]("concise","is","nice").foreach((arg:String)=>println(arg))    Array[String]("concise","is","ncie").foreach(println);        //------arg是val類型,而不是var類型,arg不能再for表達式的函數體中重新賦值    for(arg<-Array[String]("concise","is","ncie"))      println(arg)            //4. 帶類型的參數化數組    val greetStrings=new Array[String](3)    //-----當你在一個或多個值或變量外使用括號時,Scala會把它轉換成對名為apply的方法調用.于是greetStrings(i)轉換成    //-----greetStrings.apply(i)。所以Scala里訪問數據的元素也不過只是跟其它的一樣的方法調用    //這個原則不僅僅局限于數組:任何對某些在括號中的參數的對象的應用將都被轉換為對apply方法的調用.當前前提是這個類型實際定義過    //apply方法。所以這不是一個特例,而是一個通則    greetStrings(0)="Hello" //java是[0]    greetStrings(1)=","    greetStrings(2)="world"    //-----0 to 2 實際上調用的是(0).to(2)    for(i<-0 to 2) //0 1 2      print(greetStrings(i))        var numName=Array("1","2","3");    val numName2=Array.apply("1","2","3","4");    for(i<- 0 to 2){      println(numName(i))    }        for(i <- 0 to 3){      println(numName2(i))    }              //5. 使用List       val oneTwoThree=List(1,2,3)    //---scala中List是不可變的,表現上有些像Java的String:當你在一個List上調用方法時,似乎這個名字指代的List看上去被改變了,而實際上    //---它只是用新的值創建了一個List并返回。    val oneTwo=List(1,2)    val threeFour=List(3,4)    val oneTwoThreeFour=oneTwo ::: threeFour    println(oneTwo+" and "+ threeFour+"were not mutated.")    println("Thus, "+oneTwoThreeFour+" is a new List.")        //-- :: 把一個新元素組合到已有List的最前端,然后返回結果List    val twoThree=List(2,3)    //執行過程為 twoThree.::(1)    val tmp=1 :: twoThree    println(tmp)        val tmp2=1::2::3::4::Nil    //Nil要最后才能使用 ::被定義在List類上的方法,如果使用1::2::3 由于3是Int類型的,沒有::方法,因此會導致異常    println(tmp2)        //為什么List不支持append ?    //類List沒有提供append操作,因為隨著列表邊長append的耗時將呈線性增長,而使用::做前綴則僅花費常量時間.如果你想通過添加元素來構造列表    //你的選擇時把它們前綴進去,當前完成之后再調用reverse;或使用ListBuffer,一種提供append操作的可變列表,當你完成之后再調用toList            //目前元組的最大長度支持到 22    var pair=(1,2,"a","b");    println(pair._1)    println(pair._2)    println(pair._3)    println(pair._4)            //7. 使用Set和Map    var jetSet=Set("Boeing","Airbus")    jetSet+="Lear" //對不可變集 使用+=需要重新賦值,所以是var的    println(jetSet.contains("Lear"))        import scala.collection.mutable.Set  //引用了可變 Set    val movieSet=Set("Hitch","Poltergeist")    movieSet+="Shrek" //是可變的不需要對 movieSet重新賦值,所以他是val的    println(movieSet);        import scala.collection.immutable.HashSet    val hashSet=HashSet("Tomatoes","Chilies")    println(hashSet+"Coriander")        //Map是Scala里另一種有用的集合類,和Set一樣,Scala采用了類繼承機制提供了可變的和不可變的兩種版本的Map    //scala.collection包里面有一個基礎的Map特質和兩個子特質Map    //可變的Map在scala.collection.mutable里,不可變的在scala.collection.immutable里        import scala.collection.mutable.Map    val treasureMap=Map[Int,String]()    // -> 可以調用Scala程序里的任何對象,并返回一個包含鍵和值的二元組    treasureMap+=(1->"Go to island.")    treasureMap+=(2->"Find big X on ground.")    treasureMap+=(3->"Dig.")    println(treasureMap(2))          }    //2. 定義函數  def max(x:Int,y:Int):Int={    if(x>y){      x    }else{      y    }  }    def max2(x:Int,y:Int)=if(x>y)x else y    def greet()="h"  // println(greet) 輸出結果為 h  def greet2()=println("h") // println(greet2) 輸出結果為 h () 是因為該方法是沒有返回值的            //需要注意的地方:  def f():Unit="this string gets lost"  def g(){"this string gets lost"}  def h()={"this string gets lost"}    def name(): Unit = {      }    //分號推斷      }class Scala2 {  //默認就是 public 級別  private var sum = 1;    //傳遞給方法的任何參數都可以在方法內部使用,Scala里方法參數的一個重要特征是它們都是val 不是var  //def add(b:Byte):Unit={  //  sum+=b;  //}  def add(b:Byte):Unit=sum+=b;      //如果沒有發現任何顯式的返回語句,Scala方法將返回方法中最后一個計算得到的值  //def checksum():Int={  //  return ~(sum & 0xff)+1  //}    //= ~ 之間要有空格,否則編譯報錯(認為=~是一個整體)  def checksum():Int= ~(sum & 0xff)+1  }
上一篇:Scala(二)

下一篇:判斷是否AJAX 提交

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 珲春市| 五寨县| 汶川县| 宜阳县| 天等县| 得荣县| 东山县| 中西区| 鄂伦春自治旗| 五常市| 龙南县| 柳州市| 阳朔县| 嵊泗县| 长垣县| 山东省| 静安区| 晋江市| 镇赉县| 十堰市| 鄯善县| 漳州市| 苍梧县| 海口市| 方城县| 成武县| 昌都县| 保德县| 周至县| 扎鲁特旗| 平湖市| 岳池县| 东兴市| 迁西县| 和硕县| 肥城市| 自治县| 双柏县| 天津市| 岳阳县| 申扎县|