真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Scala語言學(xué)習(xí)之語言基礎(chǔ)(2)-創(chuàng)新互聯(lián)

注: --------scala 中的任何數(shù)據(jù)都是對象

專業(yè)成都網(wǎng)站建設(shè)公司,做排名好的好網(wǎng)站,排在同行前面,為您帶來客戶和效益!成都創(chuàng)新互聯(lián)公司為您提供成都網(wǎng)站建設(shè),五站合一網(wǎng)站設(shè)計制作,服務(wù)好的網(wǎng)站設(shè)計公司,成都網(wǎng)站設(shè)計、做網(wǎng)站負(fù)責(zé)任的成都網(wǎng)站制作公司!

       --------Scala 可以對數(shù)據(jù)類型進(jìn)行自動推導(dǎo),所以定義變量時可省去數(shù)據(jù)類型

==> 數(shù)據(jù)類型

    --> 數(shù)值類型

            --- Byte        8位


          --- Short        16 位

          --- Int            32 位

          --- long          64位

    --> 字符和字符串類型

          --- Char

          --- String

    --> Unit 類型  相當(dāng)于 Java 的 void

     --> Nothing 類型   般表示運(yùn)行過程中出現(xiàn)了 Exception

==> 定義變量

    --> 格式: var | val  變量名:類型 = 內(nèi)容

    --> var 定義值可變的變量

var a = "hello"        // var a:String = "hello"
var b = 12345            // var b: Int = 12345

    --> val 定義值不可變的常量

val a = "word"

==> 函數(shù)

    --> 格式: def 函數(shù)名(變量名:類型 | 變量名:=> 類型): 函數(shù)返回值類型 = {}

    --> 函數(shù)參數(shù):

            --- call by value : def demo(x:Int, y: Int): Int = x + x        對函數(shù)的實參求值


                 demo(3+4, 8)

                計算過程:

                    7 + (3+4)

                    7 + 7

                    14

      --- call by name : def demo(x: => Int, y: => Int): Int = x + x    函數(shù)的實參每次在函數(shù)體內(nèi)部被調(diào)用的時候都會求值

               demo(3+4, 8)

                計算過程:

                    7 + 7

                    14

      --- 默認(rèn)參數(shù):def func1(name: String = "Tom"): String = "Hello" + name


      --- 代名參數(shù) :

def func2(str: String="My name", name: String="Marry", age: Int=18): String = {
    str + " is " + name + ", I'm " + age + "啦!" 
}

func2(name="Tom")
func2()

      --- 可變參數(shù) : 求多個數(shù)字的和

def sum(args: Int*) = {
    var result = 0
    for(arg <- args)
        result += arg
        result
}

sum(1, 2, 3)

==> 懶值(lazy): 如果一個變量是 lazy , 他的初始化會被推遲,直到第一次使用它的時候才會執(zhí)行

    --> 正常的變量定義后會直接賦給變量,如:

                var a = "hello"


             定義變量后會返回: a : String = "hello"


    --> 使用 lazy 定義變量時,不會執(zhí)行,只有在第一次執(zhí)行的時候才會執(zhí)行賦值操作,如:

              lazy var a = "hello"


              定義變量后返回: a: String =


              只有使用變量時,才會進(jìn)行賦值操作:


                 a


                 String = "hello"

==> 異常: 異常的處理機(jī)制是什么?  向上處理

    -->采用 try{ …… }catch{ …… }finally{……} 捕獲和處理異常

try{
    val words = scala.io.Source.fromFile("d:\\demo\\a.txt").mkString
}catch{
    case ex:java.io.FileNotFoundException => {
        println("File Not Found!!!")
    }
    case ex: IllegalArgumentException => {
        println("Illegal Argument Exception!!!")
    }  
    case _:Exception => {
        println("othe Exception")
    }  
}finally{
    println("finally block")
}

    --> 如果一個函數(shù)的返回類型是Nothing, 表示在函數(shù)執(zhí)行過程中產(chǎn)生異常

def func1() = throw new IllegalArgumentException("Some Error Happened")

    --> if else 語句,如果在一個分支中產(chǎn)生了異常,則另一個分支的返回值,將作為if else 返回值的類型

val x = 10
if(x >= 0){
    scala.math.sqrt(x)
}else{
    throw new IllegalArgumentException("The value should be not")
}

==> 數(shù)組

    --> 定長數(shù)組:使用關(guān)鍵字 Array

val a = new Array[Int](10)
val str = new Array[String](5)
val demo_list = Array("Tom", "Marry", "Mike")

    --> 變長數(shù)組:使用關(guān)鍵字 ArrayBuffer

val list1 = ArrayBuffer[Int]()

// 向數(shù)組中插入元素
list1 += 1
list1 += 5

// 向數(shù)組中插入多個元素
list1 += (20, 55, 47)

// 去掉最后三個值
list1.trimEnd(3)

// 將 ArrayBuffer 轉(zhuǎn)換為 Array
list1.toArray

    --> 遍歷數(shù)組

// 創(chuàng)建數(shù)組
var names = Array("Tom","Marry","Linda")
// 使用 for 循環(huán)遍歷
for(name <- names)
    println(name)

// 使用 foreach 遍歷
names.foreach(println)

// 對數(shù)組進(jìn)行轉(zhuǎn)換,生成一個新的數(shù)組
val newnames = for{
    name <- names
    new = name.toUpperCase
}yeild(new)

    --> 數(shù)組常用操作


import scala.collection.mutable.ArrayBuffer

val demoArray = Array(6,8,4,,5,2,6,5,4)

// 大值
demoArray.max

// 最小值
demoArray.min
// 求和
demoArray.sum
// 定義一個變長數(shù)組
demoArrayBuffer = ArrayBuffer(5,3,5,7,8,7,9,5,74)

// 降序排序
demoArrayBuffer.sortWith(_ > _)
// 升序排序
demoArrayBuffer.sortWith(_ < _)

==> 映射: 一個由 key, value 組成的集合

    --> 使用 -> 符號創(chuàng)建

val demoMap = Map("Tom" -> 11, "Marry" -> 44)

    --> 不可變 Map

val testMap = scala.collection.immutable.Map("Tom" -> 20, "Marry" -> 18)

    --> 可變 Map

val testMap = scala.collection.mutable.Map("Tom" -> 20, "Marry" -> 18)
val testMap1 = scala.collection.mutable.Map(("Tom", 20),("Marry", 18))

    --> 映射操作

// 獲取映射中的值,如果不存在,會拋出 Exception
testMap("Tom")

// 可通過 Map.constains 事先判斷數(shù)據(jù)是否存在,然后再取值
if(testMap.contains("Tom")){
    testMap("Tom")
}else{
    -1
}
// 簡寫
testMap.getOrElse("Tom", -1)

// 更新值
testMap("Tom") = 25

// 添加新元素
testMap += "lily" -> 18

// 移除元素
testMap -= "Tom"

// 迭代,使用 for,或者 foreach
for(m <- testMap)println(m)
testMap.foreach(println)

==> 元組: 不同類型的值的聚集

    --> 創(chuàng)建元組: val 名稱+個數(shù) = (元素,元素)

val tu1 = (1, 2, 3)
val tu2 = new Tuple2("hello", "world")

    --> 訪問元組中的元素


tu1._1    //點(diǎn)后面跟的是第幾個元素
1

    --> 遍歷元組,使用foreach 遍歷元組,注意,元組遍歷前首先需要生成對應(yīng)的迭代器,不能直接使用for 或者 foreach 進(jìn)行遍歷


tu1.productIterator.foreach(println)

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


網(wǎng)站題目:Scala語言學(xué)習(xí)之語言基礎(chǔ)(2)-創(chuàng)新互聯(lián)
本文網(wǎng)址:http://weahome.cn/article/iccej.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部