Scala day 1 (Run scala)
前言
在還沒開始之前有些稍微找了一些 scala 的資料.
scala 基本的核心概念或許就是名字的本身 scalable(sca) language(la),感覺這語言就是要讓它的擴充性很強大.
而且很有意思的是發現它還可以用來實作 functional programming,但 scala 是基於 JVM 的語言,
Java 卻是 object oriented programming,這樣看起來的意思是 scala 可以跨越 functional programming 及 object oriented programming 的一種語言.
但由於本身只會一點點 java,也不太了解 functional programming.所以無法很宏觀的來看待 scala.
不過相信一種語言用久了一定會漸漸了解它的好與不足的地方.
所以還是別想太多一天一天的來認識 scala 吧~
Run scala
scala安裝:
1.下載scala-2.12.4版本(需要jdk1.8),這邊使用的是scala-2.12.4.tgz
2.下載後解壓縮,設定環境變數(vi ~/.bash_profile)
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home
export SCALA_HOME=/Volumes/Transcend/scala-test/scala-2.12.4
export PATH=$JAVA_HOME/bin:$SCALA_HOME/bin:$PATH:~/bin
修改完後,重新讀取設定檔:
source ~/.bash_profile
確認java版本
daniel@Danielde-MacBook-Pro > java -version
java version "1.8.0_111"
Java(TM) SE Runtime Environment (build 1.8.0_111-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.111-b14, mixed mode)
使用指令執行scala:
使用三種方式印出HelloWorld.
- 第1種 使用 scala REPL 環境印出HelloWorld.
執行scala,要離開scala 環境,可下:q 或 :quit
daniel@Danielde-MacBook-Pro > scala
Welcome to Scala 2.12.4 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_111).
Type in expressions for evaluation. Or try :help.
scala> val msg = "Hello World"
msg: String = Hello World
scala>
- 第2種 使用 HelloWorld.scala 印出HelloWorld.
object HelloWorld {
def main(args: Array[String]): Unit = {
println("Hello World!")
}
}
直接執行scala程式
daniel@Danielde-MacBook-Pro > scala HelloWorld.scala
Hello World!
- 第3種 使用 HelloWorld.sh 印出HelloWorld.
#!/usr/bin/env scala
object HelloWorld extends App {
print(args(0) + " ")
print(args(1) + "\n")
}
val args = Array("Hello","World!")
HelloWorld.main(args)
val msg="This is by shell"
println(msg)
執行HelloWorld.sh
daniel@Danielde-MacBook-Pro > ./HelloWorld.sh
/Volumes/Transcend/scala-test/./HelloWorld.sh:8: warning: Script has a main object but statement is disallowed
val args = Array("Hello","World!")
^
one warning found
Hello World!
This is by shell
總結
-
scala 安裝時需要安裝jdk.
-
執行scala有三種方式:
- 使用scala REPL.
- 使用scala直接執行scala程式.
- 直接執行shell的方式.