十二步學會Scala(1):從下載安裝到定義方法
Scala教程現在網絡上不算特別多,但也不少了。alanwu撰寫本篇的目的在于提供一個Scala快速入門,這樣大家可以先很快的上手,以后再慢慢熟悉這門語言。
原文地址:AlanWu的博客 | 51CTO編輯推薦:Scala編程語言專題
本Scala快速入門參考了《First Steps to Scala》的內容。下面開始:
我先大致根據這篇文章寫一些自己的理解,讓想學Scala的同學有個感性認識。
讀者對象:有Java經驗的工程師
第一步:下載和安裝Scala
在官網下載并接壓縮,像安裝ANT或MAVEN之類的那樣,把解壓后的bin路徑加到path里面去就可以了。
在命令行模式下輸入Scala
cmd 寫道
- C:\Documents and Settings\19002850>scala
- Welcome to Scala version 2.7.5.final (Java HotSpot(TM) Client VM, Java 1.6.0_13)
- .
- Type in expressions to have them evaluated.
- Type :help for more information.
- scala>
如果你看到scala提示符,那么恭喜你,說明Scala安裝成功了。
第二步:學習使用Scala解釋器(interpreter)
Scala也算是解釋性語言,所以你可以直接與解釋器交互。
cmd 寫道
- scala> 1 + 3
- res0: Int = 4
- scala>
直接輸入 1 + 3 ,返回res0: Int = 4
res0表示變量名, Int表示類型, 4是值。
Scala的類型定義在冒號后面,和java放在前面不同,和UML類圖的屬性定義方式一樣。
Scala是強類型語言,必須要定義類型,但Scala編譯器足夠聰明,他能夠根據你的值幫你定義變量的類型。
這里res0是個變量名,所以你可以接下來再使用。
cmd 寫道
- scala> res0 * 3
- res1: Int = 12
- scala>
解釋器又給了一個變量res1。
Scala的所有變量都是對象,所有操作都是方法。
所以*也是方法,你可以這樣調用:
cmd 寫道
- scala> res0.*(res1)
- res2: Int = 48
- scala>
這個和java很不同,java的int不是對象。
是不是有點繞進去了,那么來個hello world宣告第二步結束。
cmd 寫道
- scala> println("Hello World!")
- Hello World!
- scala>
這個println是個方法,因為Scala有預定義導入一些類,所以可以直接使用。
因為Scala更新很快,每個版本的Scala的解釋器可能都有一些不同,所以如果返回的變量名或有其他有一點不一樣,請不要太奇怪。
第三步: 定義變量
寫程序最入門就是定義變量和方法,前面的變量由Scala解釋器自動定義了,這一步自己定義變量。
Scala有兩種類型的變量,val 和var 。 val 變量的值只能初始化一次,再次賦值就發生錯誤,var就和java的變量相同,可以隨時修改。
val 是函數式編程的風格,變量一旦賦值就不要再做修改,從程序上將有很多好處,但有時候做起來會比較繞。
cmd 寫道
- scala> val msg = "Hello World!"
- msg: java.lang.String = Hello World!
- scala> msg = "Hello JavaEye"
: 5: error: reassignment to val- msg = "Hello JavaEye"
- ^
- scala>
Scala是強類型語言,每個變量都需要類型。但如果你賦給變量的有足夠明細的類型提示,那么編譯器會幫你把類型加上去。
把剛才的msg打印出來
cmd 寫道
- scala> println(msg)
- Hello World!
- scala>
再來看看var ,比較好理解。
cmd 寫道
- scala> var greeting: String = "Hello World!"
- greeting: String = Hello World!
- scala> println(greeting)
- Hello World!
- scala> greeting = "Hello World!"
- greeting: String = Hello World!
- scala> println(greeting)
- Hello World!
- scala>
記住,Scala有兩種變量標識,和java不一樣。
第四步: 定義一些方法
以前程序就是變量和方法組成吧,所以變量和方法是最基礎的東西。
我們定義一個取最大值的方法max
cmd 寫道
- scala> def max(x: Int, y: Int): Int = if(x < y) y else x
- max: (Int,Int)Int
定義變量用val和var,定義方法用def 。
這個max方法有方法參數,返回值類型,方法體。麻雀雖小,五臟俱全了。
Scala的變量表示是變量名: 類型 ,這一點和java甚至其他語言都很不同,和UML風格比較接近。
調用方法很簡單:
cmd 寫道
- scala> max(3,8)
- res9: Int = 8
Scala中方法也是一個類型,或者說是一個值,成為First Class。
所以可以把max看成是個變量名,(Int,Int)Int是它的類型。他可以作為參數傳遞,也可以賦值給其他變量。
cmd 寫道
- scala> val m = max _
- m: (Int, Int) => Int =
將max賦值給m, 請注意max后面帶的下劃線,不要忘記寫了。
調用m
cmd 寫道
- scala> m(1,3)
- res11: Int = 3
- scala>
在初學的時候就講這個好像有點急進了,不太容易理解,不過沒關系,先了解一下總比看到后莫名其妙好。
OK,本篇到此結束。本Scala快速入門系列計劃通過十二步完成,現在進展到了第四步。后續內容敬請期待!
【編輯推薦】