<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                [TOC] # 變量定義 ## val 可以不聲明類型,scala自動推斷類型 ~~~ val a = "123"; ~~~ 也可以直接聲明類型 ~~~ val b: String = "123"; ~~~ **注意: val聲明的變量,聲明好了之后,值是不可變的,相當于final修飾了,但是可以用val重新賦值** ~~~ scala> val k = "123" k: String = 123 scala> k = "234" <console>:12: error: reassignment to val k = "234" ^ scala> val k = "234" k: String = 234 ~~~ 推薦用val,方便垃圾回收 ## var 和val相比,var是可以重新賦值的 # 常用類型 scala和java一樣,有7種數值類型Byte, Char, Short, Int, Long, Float和Double(無包裝類型)和一個Boolean類型 # 循環 **注意:scala沒有++這個操作符** ~~~ scala> val s = "hello123"; s: String = hello123 scala> for (c <- s) println(c) ~~~ for里面的就是把s遍歷出來的元素賦值給c **表達式1-10循環** ~~~ for (i <- 1 to 10) println(i) ~~~ **循環數組** ~~~ # val arr = Array[String]("a", "b", "c") val arr = Array("a", "b", "c") for (i <- arr) println(i) ~~~ **高級循環** 每個生成器都可以帶一個條件,注意: if前面沒有分號 ~~~ scala> for (i <- 1 to 3; j<- 1 to 3 if i != j) | println(i + "---" + j) ~~~ **for推導式** 如果for循環的循環體以yield開始,則該循環會構建出一個集合 每次迭代生成集合中的一個值 ~~~ val v = for (i <- 1 to 10) yield i * 10 println(v) Vector(10, 20, 30, 40, 50, 60, 70, 80, 90, 100) ~~~ **util包左不包右** ~~~ val a = Array("a", "b", "c") for(i <- 0 util a.length) println(a(i)) ~~~ ## while循環中斷 ~~~ import scala.util.control.Breaks val loop = new Breaks var n = 1 loop.breakable{ while(n<=20) { n+=1; println(n) if(n == 18) { loop.break() } } } ~~~ **多重while循環** ~~~ import scala.util.control.Breaks val loop1 = new Breaks val loop2 = new Breaks var count = 1 loop1.breakable { while (true) { count += 1 println(count) if (count == 10) { loop1.break() } loop2.breakable { while (true) { println(count) count += 1 if (count == 20) { loop2.break() } } } } } ~~~ # 判斷 **支持混合類型的表達式** ~~~ scala> val x = 1 x: Int = 1 scala> val z = if(x>1) 1 else "error" z: Any = error ~~~ **可以缺失else** 如果缺失else,相當于`if (x>2) 1 else ()` ~~~ scala> val m = if (x>2) 1 m: AnyVal = () ~~~ # 塊表達式 ~~~ scala> val x = 0 x: Int = 0 scala> val result = { | if(x>0) { | -1 | } else if(x>=1) { | 1 | } else { | "error" | } | } result: Any = error ~~~ # 操作符重載 ![](images/screenshot_1543978894433.png) ~~~ a+b ~~~ 是如下方法調用的簡寫 ~~~ a.+(b) ~~~ a方法b可以寫成`a.方法(b)` # 方法 ~~~ scala> def m(x:Int) : Int = x*x m: (x: Int)Int scala> m(4) res0: Int = 16 ~~~ 可以把返回值類型去掉 ~~~ def m(x:Int) : x*x ~~~ 可以返回空 ~~~ scala> def n (y:Int, z:Int) : Unit = println(y+z) n: (y: Int, z: Int)Unit scala> val a = n(1,3) 4 a: Unit = () ~~~ 還可以這樣寫 ~~~ scala> def n(y: Int, z: Int) { | println(y+z) | } n: (y: Int, z: Int)Unit ~~~ # 類型 ![](https://box.kancloud.cn/fd4a1f7d7baf43a8c59492b09208b1a4_1212x814.png) AnyVal表示值類型 AnyRef表示引用類型 scala中,所有的值都是類對象,而所有的類,包括值類型,都最終繼承自一個統一的根類型Any. 統一類型,是scala的一個特點,scala還定義了幾個底層類(Bottom Class),比如Null和Nothing 1. Null是所有引用類型的子類型,而Nothing是所有類型的子類型.Null類只有一個實例對象,null,類似于java中的null引用.null可以賦值給任意引用類型,但是不能賦值給值類型 2. Nothing,可以作為沒有正常返回值的方法的返回類型,非常直觀的告訴你這個方法不會正常返回,而且由于Nothing是其他任意類型的子類,他還能跟要求返回值的方法兼容 3. Unit類型用來標識過程,也就是沒有明確返回值的函數 ## 不可變和可變的 **不可變的** ![](https://box.kancloud.cn/6600852b4aa28eceae6448ffedbb09a7_1041x921.png) **可變的** ![](https://box.kancloud.cn/0bd9463776b2d08833f1bd9fe16e3e38_1357x916.png) # 懶值 ~~~ def play1(a1: Int) = { println("play方法被執行") a1 } lazy val res = play1(10) println("res變量定義完畢") println(res) ~~~ 輸出 ~~~ res變量定義完畢 play方法被執行 10 ~~~ # queue `new Queue[Int]()` queue ++= List(2,3,4) 向隊列中追加list dequeue按進入隊列的順序刪除元素 enqueue塞入數據 queue.head返回隊列的第一個元素 queue.last 返回隊列的最后一個元素 queue.tail 返回除了第一個元素以外的元素 # copy方法和帶名參數 copy創建一個與現有對象值相同的新對象,并可以通過帶名參數來修改某些屬性 ~~~ val amt = Currency(29.95, "EUR") val price = amt.copy(value=19.95) ~~~
                  <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>

                              哎呀哎呀视频在线观看