本文是對(duì)Scala語(yǔ)言的一個(gè)基本介紹和快速入門(mén)慢蜓,共包括如下章節(jié):
- 概述
- 安裝Scala
- 交互式命令行工具
- 文件方式
- 基本語(yǔ)法規(guī)范
- 開(kāi)發(fā)工具
- 小結(jié)
參考資料:因?yàn)镾cala源碼是編譯成Java字節(jié)碼系洛,然后在jvm中執(zhí)行。并且scala和java可以相互無(wú)縫調(diào)用。因此scala語(yǔ)言和java語(yǔ)言有天然的關(guān)系,語(yǔ)法也比較類(lèi)似,所以熟悉JAVA語(yǔ)言對(duì)理解Scala語(yǔ)言有很大幫助催享。
一、概述
Scala是當(dāng)前熱門(mén)的現(xiàn)代編程語(yǔ)言之一哟绊,尤其在大數(shù)據(jù)領(lǐng)域,如spark,kafka等大數(shù)據(jù)技術(shù)的而核心代碼都是使用Scala語(yǔ)言編寫(xiě)的痰憎。scala由洛桑聯(lián)邦理工學(xué)院的Martin Odersky設(shè)計(jì)票髓,第一個(gè)版本發(fā)布于2003年,現(xiàn)在最新版本為2.12版本铣耘。
Scala語(yǔ)言有如下一些主要的特性:
- 基于JVM運(yùn)行洽沟,可以和java相互無(wú)縫互操作
- 靜態(tài)類(lèi)型,編譯型語(yǔ)言蜗细,編譯成java字節(jié)碼
- 支持函數(shù)式編程范式
- 純面向?qū)ο缶幊陶Z(yǔ)言裆操,所有值都是對(duì)象
- 并發(fā)性怒详,使用Actor作為其并發(fā)模型
- 自動(dòng)類(lèi)型推斷功能
二、安裝scala
從官方網(wǎng)站www.scala-lang.org/download下載二進(jìn)制版本踪区,如下圖所示:
如果要在window下安裝昆烁,下載windows下的安裝包 scala-2.12.8.msi,下載到本地后缎岗,雙擊運(yùn)行安裝即可静尼。安裝完成后,安裝程序會(huì)將scala安裝目錄下的bin目錄加入到Path環(huán)境變量中传泊,這樣可在dos命令行下的任何當(dāng)前目錄下運(yùn)行bin目錄下的可執(zhí)行腳本或程序鼠渺。
如果要在Linux下安裝,下載scala-2.12.8.tgz眷细,下載到本地后解壓即可拦盹,然后解壓目錄下的bin目錄加入到PATH環(huán)境變量中,便于任何當(dāng)前目錄下都可運(yùn)行bin目錄下的可執(zhí)行腳本或程序溪椎。
三掌敬、交互式命令行工具
scala提供了一個(gè)交互式命令行腳本(linux下文件名為scala,windows下文件名為scala.bat)池磁,可以快速的來(lái)簡(jiǎn)單學(xué)習(xí)scala的語(yǔ)法知識(shí)奔害。
打開(kāi)命令行,運(yùn)行scala地熄,出現(xiàn)交互式界面华临,就可以輸入代碼,輸入:quit退出交互式程序(注意quit前要有冒號(hào))端考。
C:\Windows\System32>scala
Welcome to Scala 2.12.8 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_40).
Type in expressions for evaluation. Or try :help.
scala> println("hello,world")
hello,world
scala> :quit
C:\Windows\System32>
四雅潭、文件方式
交互式命令行只是用來(lái)進(jìn)行編程練習(xí)的。實(shí)際的應(yīng)用開(kāi)發(fā)中却特,源代碼是保存在文件中的扶供,然后進(jìn)行源代碼編譯,再運(yùn)行裂明。scala提供了一個(gè)腳本文件scalac(windows下為scalac.bat)可以進(jìn)行源代碼的編譯椿浓,將源文件編譯成class文件,然后可以利用scala腳本來(lái)運(yùn)行闽晦。下面通過(guò)一個(gè)簡(jiǎn)單的例子來(lái)舉例扳碍。
建立一個(gè)源碼文件,文件名如HelloWorld.scala保存到本地仙蛉,scala的源文件的擴(kuò)展名為scala笋敞。文件內(nèi)容如下:
object HelloWorld {
def main(args: Array[String]) {
println("Hello, world!")
}
}
上面代碼雖少,但是一個(gè)完整的可獨(dú)立運(yùn)行的scala應(yīng)用程序荠瘪。一個(gè)獨(dú)立運(yùn)行的scala應(yīng)用程序的入口是一個(gè)單例對(duì)象(如上面用object關(guān)鍵字定義的HelloWorld對(duì)象)的main方法(如上面用def關(guān)鍵字定的方法)夯巷,類(lèi)似java中的main方法的入口赛惩。更詳細(xì)的scala語(yǔ)法參見(jiàn)《Scala學(xué)習(xí)筆記(2)-基礎(chǔ)語(yǔ)法》。
下面對(duì)源代碼文件進(jìn)行編譯趁餐,并運(yùn)行喷兼,整個(gè)過(guò)程如下:
D:\scaladev\demo>ls
HelloWorld.scala
D:\scaladev\demo>scalac HelloWorld.scala
D:\scaladev\demo>ls
'HelloWorld$.class' HelloWorld.class HelloWorld.scala
D:\scaladev\demo>scala HelloWorld
Hello, world!
編譯用到scala的scalac程序,類(lèi)似jdk中的javac澎怒,運(yùn)行使用scala程序褒搔,類(lèi)似jdk中的java程序。
需要特別說(shuō)明的是喷面,scala是一個(gè)純面向?qū)ο蟮木幊陶Z(yǔ)言星瘾,在編寫(xiě)scala程序時(shí),所有的語(yǔ)句(如函數(shù)定義惧辈、變量聲明和賦值)都必須被包含在類(lèi)或單例對(duì)象中琳状。我們前面看到在scala提供的交互式命令行程序中可以直接輸入語(yǔ)句(并沒(méi)有定義類(lèi))進(jìn)行執(zhí)行,是因?yàn)槊钚谐绦蛞呀?jīng)做了特殊的處理盒齿。
五念逞、基本語(yǔ)法規(guī)范
區(qū)分大小寫(xiě),如變量边翁、函數(shù)名等都區(qū)分大小寫(xiě)
單行語(yǔ)句后面可以加分號(hào)結(jié)尾(如java),也可以不加分號(hào)結(jié)尾
六翎承、開(kāi)發(fā)工具
可以有多種方式來(lái)編寫(xiě)scala程序,在正式項(xiàng)目開(kāi)發(fā)中我們一般使用可視化的IDE工具符匾,如IntelliJ叨咖。如果是學(xué)習(xí)scala的語(yǔ)法和相關(guān)的api,也可以使用scala提供的命令行工具(如前面介紹的)啊胶,或不需要任何工具直接使用一些在線的編程練習(xí)系統(tǒng)甸各。
(一)使用帶有Scala插件的IntelliJ IDE
安裝
1、首先下載并安裝IntelliJ Community Edition
2焰坪、安裝scala插件趣倾。創(chuàng)建項(xiàng)目
1、打開(kāi)IntelliJ并單擊File => New => Project
2某饰、 在左側(cè)面板中儒恋,選擇Scala。在右側(cè)面板中露乏,選擇IDEA碧浊。
3、在出現(xiàn)的對(duì)話框中瘟仿,將項(xiàng)目命名為HelloWorld
4、假設(shè)這是您第一次使用IntelliJ創(chuàng)建Scala項(xiàng)目比勉,則需要安裝Scala SDK劳较。在Scala SDK字段的右側(cè)驹止,單擊“ 創(chuàng)建”按鈕。如果本地已經(jīng)有scala運(yùn)行環(huán)境观蜗,選擇所在的目錄即可臊恋;如果沒(méi)有,選擇下載墓捻。創(chuàng)建SDK并返回“新建項(xiàng)目”窗口抖仅。
5、 單擊“ 完成”砖第。編寫(xiě)代碼
1撤卢、在左側(cè)的“ 項(xiàng)目”窗格上,右鍵單擊src并選擇“ 新建” =>“ Scala類(lèi)”梧兼。
2放吩、命名該類(lèi)Hello,并將Kind更改為object。
3羽杰、將類(lèi)中的代碼更改為以下內(nèi)容:
object Hello {
def main(args: Array[String]) {
println("Hello, world!")
}
}
- 運(yùn)行程序
在左側(cè)的“ 項(xiàng)目”窗格上渡紫,右鍵單擊Hello節(jié)點(diǎn)并選擇Run'Hello'。
或在選中Hello節(jié)點(diǎn)考赛,按快捷鍵 ctrl+shift+F10 可運(yùn)行程序惕澎。
(二)使用SBT
sbt是類(lèi)似ANT、MAVEN的構(gòu)建工具颜骤,全稱(chēng)為Simple build tool唧喉,是Scala事實(shí)上的標(biāo)準(zhǔn)構(gòu)建工具。其主要特性有:
- 原生支持編譯Scala代碼和與諸多Scala測(cè)試框架進(jìn)行交互复哆;
- 使用Scala編寫(xiě)的DSL(領(lǐng)域特定語(yǔ)言)構(gòu)建描述
- 使用Ivy作為庫(kù)管理工具
- 持續(xù)編譯欣喧、測(cè)試和部署
- 整合scala解釋器快速迭代和調(diào)試
- 支持Java與Scala混合的項(xiàng)目
當(dāng)安裝配置好后SBT后,我們可以在命令行下使用SBT梯找,也可以在IntelliJ中使用SBT唆阿。關(guān)于SBT的詳細(xì)信息我們不在本文中介紹。
七锈锤、小結(jié)
本文并沒(méi)有對(duì)scala的語(yǔ)法進(jìn)行詳細(xì)介紹驯鳖,主要是介紹scala運(yùn)行環(huán)境和開(kāi)發(fā)工具的搭建。下面的文章是對(duì)scala語(yǔ)言的更多介紹久免。
1浅辙、《Scala學(xué)習(xí)筆記(2)-基礎(chǔ)語(yǔ)法》
2、《Scala學(xué)習(xí)筆記(3)-面向?qū)ο缶幊躺掀?/a>
3阎姥、《Scala學(xué)習(xí)筆記(4)-面向?qū)ο缶幊滔缕?/a>
4记舆、《Scala學(xué)習(xí)筆記(5)-函數(shù)式編程》