Scala類型聲明與定義、函數定義、流程控制、異常處理

 

Scala源代碼被編譯成Java字節碼,因此它能夠運行於JVM之上,並能夠調用現有的Java類庫。
Scala的基礎類型基本與javascript一致。

Scala的數據類型所有相同於Java中,具備相同的內存佔用和精度。如下表是有關可在Scala中全部的數據類型的細節:javascript

數據類型 描述
Byte 8位有符號值。範圍從-128到127
Short 16位有符號值。範圍從-32768至32767
Int 32 位有符號值。範圍從 -2147483648 to 2147483647
Long 64位有符號值。 從-9223372036854775808到9223372036854775807
Float 32位IEEE754單精度浮點數
Double 64位IEEE754雙精度浮點數
Char 16位無符號Unicode字符。範圍由U+0000至U+FFFF
String 字符序列
Boolean 不管是字面true或false字面
Unit 對應於沒有值
Null 空或空引用
Nothing 每個其餘類型的子類型; 包括無值
Any Any類型的超類型;任何對象是任何類型
AnyRef 任何引用類型的超類型

變量聲明

Scala的變量聲明有不一樣的語法,它們能夠被定義爲值,即,常量或變量。下面是使用var關鍵字來定義一個變量的語法:java

var myVar :String="Foo"

在這裏,myVar使用關鍵字var聲明。這意味着它是一個能夠改變值的變量,被稱爲可變變量。下面是使用val關鍵字來定義變量的語法:python

val myVal :String="Foo"

這裏,myVal是使用關鍵字val聲明。這意味着,它是不能改變的變量,這是所謂的不可變變量。c++

變量數據類型:

變量類型在變量名後面指定,前在equals以前簽署。能夠經過它的數據類型定義任何類型的Scala變量以下:函數

val or val VariableName:DataType[=InitialValue]

若是不指定任何初始值變量,那麼以下所示它是有效的:this

var myVar :Int;
val myVal :String;

變量類型推斷:

當分配一個初始值給一個變量,Scala編譯器能夠計算出根據分配給它的值的變量類型。這就是所謂的變量類型推斷。所以,能夠寫這些變量的聲明以下這樣:spa

var myVar =10;
val myVal ="Hello, Scala!";

在這裏,默認狀況下,myVar是int類型scala

方法定義以下:
函數定義與python有點巧像,惟一奇葩的時,參數名放類型前面,加:隔開。返回值跟在函數參數以後。
有點搞特殊。
 
def f(x: Int) = { x*x }
def f(x: Any): Unit = println(x)
 
無參數的函數調用時能夠省略括號。
names foreach (n => println(n))
names mkString ","
optStr getOrElse "<empty>"
 
 
def add(i:Int,j:int):int{
    return i+j
}
 
變長參數
def add(x:Int*) = {
    for(i <- x) {
        println(i)
    }
    x.sum
}
def main(args:Array[String]):Unit{
    add(10,10,10)
    add(1 to 10: _*)
}
 
Scala如何定義靜態方法:  Scala默認沒有靜態方法,若是須要靜態方法,能夠經過定義Object類,在Object裏面定義方法(看後面文章)。
Scala和c++同樣,都具備默認參數,和python類型,能夠指定參數賦值。惟一不一樣的就是他的變長參數。
 

 
for( i <- 1 to 10 if i % 2 == 0) {
    println(i)
}
 
for(i <- 0 until Array.lenth){
    println(i)
}

for(i <- 0 to 10 reverse)print(i)code

 

 
val foo = for (x <- 0 until (10, 2)) yield x
 
for (i <- Array_name) {
    //todo
}
scala> 1.to(10)
res0: scala.collection.immutable.Range.Inclusive = Range(1, 2, 3, 4, 5, 6, 7, 8,
 9, 10)
scala> 1.until(10)
res1: scala.collection.immutable.Range = Range(1, 2, 3, 4, 5, 6, 7, 8, 9)
 
 
一樣的,也但是是異常處理的。
scala中德模式匹配不單單能夠對模式進行匹配,還能夠對case class/object(最最重要的) ,還有類型匹配。(向上/下類型)轉化均可以匹配。

scala中的match語句用來在一個列表中選擇某一個分支來執行分支的語句塊,相似於其餘語言中的swtich..case語句對象

下面是一個簡單的例子

var myVar ="theValue";
myVar match {
   case"someValue"   => println(myVar +" 1");
   case"thisValue"   => println(myVar +" 2");
   case"theValue"    => println(myVar +" 3");
   case"doubleValue"=> println(myVar +" 4");}
有些時候case 要捕獲一些默認狀況.
第一種值匹配
第二種類型配置
第三種,Array,list等容器的匹配
第四種,case calss樣式類
相關文章
相關標籤/搜索