Scala 語言入門(一)基礎語法和函式使用
阿新 • • 發佈:2018-12-27
一、下載安裝 scala
將下載好的scala-2.12.8.zip包解壓到當前目錄,配置 環境變數
配置path 和 classpath
編寫 HelloWorld.scala檔案
object HelloWorld{
def main(args:Array[String]){
println("hello world!!!")
}
}
在cmd 視窗,執行 scalac HelloWorld.scala 等待編譯成功之後,執行 scala -classpath . HelloWorld 看到 控制檯輸出
hello world !!!即可。
二、val 和 var
val :值 (不可變)
final
例如: val age:int =20
var :變數 (可變的)
var name:String ="zhangsan"
name = "zhangsi"
:int :String 可以不寫,scala 大多數情況下可以自動推匯出資料型別
三、scala 基本資料型別
Byte/Char
Short/Int/Long/Float/Double
Boolean
型別轉換 : 10.asInstanceOf[Double]
判斷是否是某個型別: 10.isInstanceOf[Int]
四、lazy 在 scala 中的使用
val i = 1
lazy val a = 1 , 用lazy修飾,只有在第一次使用的使用才會去給a 進行賦值。
五、函式/方法的定義
def 方法名(引數名:引數型別):返回值型別={
//括號內的叫做方法體
//方法體內的最後一行為返回值,不需要使用return
}
/** * @author DuanZhaoXu * @ClassName: * @Description: * @date 2018年12月17日 16:58:23 */ object HelloWorld { def main(args: Array[String]): Unit = { // println("hello world") // println(add(1, 2)) // println(three()) // println(three) sayHello("張三") sayName("pk1") //命名引數的使用 println(speed(100, 10)) println(speed(distance = 100, time = 10)) println(speed(time = 10, distance = 100)) //可變引數 def sum(number:Int*) println(sum(1, 5, 6, 10)) //if使用 println(ifTest(10)) } //函式基本使用 def add(x: Int, y: Int): Int = { x + y } def three() = 1 + 2 def sayHello(name: String): Unit = { println("say hello..." + name) } //1.函式預設引數 def sayName(name: String = "PK"): Unit = { println(name); } //以不按照傳入引數的順序進行函式呼叫 def loadConf(conf: String = "spark-default.conf"): Unit = { println(conf) } //2.命名引數的使用,在呼叫此函式方, def speed(distance: Float, time: Float): Float = { distance / time } //3.可變引數 def sum(a: Int, b: Int) = { a + b } def sum(a: Int, b: Int, c: Int): Int = { a + b + c } //4.可變引數 def sum(numbers: Int*) = { var sum = 0; for (number <- numbers) { sum += number; } sum } //5.if 語句 def ifTest(number: Int): Boolean = { if (number > 1) true else false //if(number>1){ //true // }else{ //false // } } //迴圈表示式 def toTest(): Unit = { //to (閉區間) 1 to 10 1.to(10) //range (不包含10) Range(1, 10, 1) Range(10, 1, -1) //until 和 range 等效 1 until 10 1.until(10) //for 迴圈 for (i <- 1 to 10 if i % 2 == 0) { println(i) } val courses = Array("Hadoop", "Spark sql", "Spark streaming", "storm", "scala") for (course <- courses) { println(course) } //foreach courses.foreach(course => println(course)) //while 迴圈 var (num, sum) = (100, 0) while (num > 0) { //出口 sum = sum + num; num = num - 1; //步長 } println(sum) } }