1. 程式人生 > >Scala入門到放棄——第一節 Scala語言初步

Scala入門到放棄——第一節 Scala語言初步

  1. Scala簡介

Scala(Scala Language的簡稱)語言是一種能夠運行於JVM和.Net平臺之上的通用程式語言,既可用於大規模應用程式開發,也可用於指令碼程式設計,它由由Martin Odersk於2001開發,2004年開始程式執行在JVM與.Net平臺之上,由於其簡潔、優雅、型別安全的程式設計模式而受到關注。

2、Scala特點

1、純面向物件程式語言

2、函數語言程式設計語言

函數語言程式設計語言應支援以下特性:

(1)高階函式(Higher-order functions)

(2)閉包( closures)

(3)模式匹配( Pattern matching)

(4)單一賦值( Single assignment )

(5)延遲計算( Lazy evaluation)

(6)型別推導( Type inference )

(7)尾部呼叫優化( Tail call optimization)

(8)型別推導( Type inference )

3、Scala語言具有很強的相容性、移植性 Scala運行於JVM上,能夠與JAVA進行互操作,具有與JAVA一樣的平臺移植性

4、Scala語法的簡潔

  1. Scala語言初步

3.1、變數定義

//宣告一個val變數與java final關鍵字宣告的變數一樣一旦被賦值,便不能更改
scala> val helloString="Hello World"
helloString: String = Hello World

//也可以進行型別指定
scala> val helloString:String="Hello World"
helloString: String = Hello World

//String其實就是java.lang.String
scala> val helloString:java.lang.String="Hello World"
helloString: String = Hello World

//不能被重新賦值,因為它是val變數
scala> helloString="Hello Crazy World"
<console>:8: error: reassignment to val
       helloString="Hello Crazy World"

下面給出的延遲載入變數:

//lazy關鍵字宣告變量表示該變數不會馬上賦值而在真正被使用時才賦值
scala> lazy val helloString="Hello Crazy World"
helloString: String = <lazy>

//在真正使用時被賦值
scala> helloString
res1: String = Hello Crazy World

scala中也存在可變變數,即隨著程式的執行,變數內容可以動態變化:

//var 宣告可變變數
scala> var helloString="Hello Cruel World"
helloString: String = Hello Cruel World

//重新賦值
scala>helloString="GoodBye Cruel World"
helloString: String = GoodBye Cruel World

3.2、函式初步

scala中通過下列方式進行函式定義:

//定義了一個函式,函式中使用return返回結果
scala> def add(a:Int,b:Int):Int={return a+b}
add: (a: Int, b: Int)Int

scala> add(1,2)
res3: Int = 3

//可以省去return,scala會將最後一個執行語句作為函式的返回值
scala> def add(a:Int,b:Int):Int={a+b}
add: (a: Int, b: Int)Int

//省去返回值型別,scala會自動進行型別推斷
scala> def add(a:Int,b:Int)={a+b}
add: (a: Int, b: Int)Int

scala> add(1,2)
res4: Int = 3

3.3、HelloWorld應用程式

package cn.xtwy.scala.chapter01

//scala應用程式同樣採用main方法作為應用程式的入口
object HelloWorld {
  def main(args: Array[String]): Unit = {
    println("Hello World")
  }
}