Scala教學(二)常數、參數與型態介紹
今天要跟大家介紹 Scala
語法中,常數、參數的寫法與基本資料型態的介紹。
Quick Start
接下來將要分享我的Scala
學習筆記,有任何建議與需要改進的地方,也請大家多多指教。
參考書籍Learning Scala
常數(Values)
常數的值是不可以被改變的。
語法如下:
val
<identifier
>[: <type
>] = <data
>
舉幾個例子:
範例1.1
2scala> val x:Int = 2
x: Int = 2
範例2.1
2scala> val str:String = "Hello world"
str: String = Hello world
如果說,我們嘗試去將常數的值重新定義會發生什麼事情呢?1
2
3scala> x=30
^
error: reassignment to val
會出現錯誤訊息,並且跟我們說,不能重新定義新值
另外,我們可以從語法去看出,常數的資料型態不一定需要寫。當沒有寫的時候,編譯器會幫我們自動指派一個符合的資料型態。
如:1
2scala> val y=10
y: Int = 10
編譯器幫我們指派了 y
這個參數的資料型態為 Int
。
參數(Variables)
在我們寫程式的過程中,參數是最常被我們運用到的。
語法如下:
var
<identifier
>[: <type
>] = <data
>
他與常數的差別就是在第一個關鍵字,參數是 var
,常數則是 val
。
我們來看看下面例子:
1 | scala> var a = 100 |
參數的值被更改了,但是如果我們今天將它改成字串會變成怎樣呢?1
2
3
4
5scala> a = "Hello world"
^
error: type mismatch;
found : String("Hello world")
required: Int
結果是不行的,一旦一開始的資料型態被確定,就沒辦法再改了。
資料型態(Type)
關於數字的資料型態
Name | Description. | Siz | Min | Max. |
---|---|---|---|---|
Byte | Signed integer | 1 byte | -127 | 128 |
Short | Signed integer | 2 byte | -32768 | 23767 |
Int | Signed integer | 4 byte | -2^31 | 2^31 -1 |
Long | Signed integer | 8 byte | -2^63 | 2^63 -1 |
Float | Signed floating point | 4 byte | n/a | n/a |
Double | Signed floating point | 8 byte | n/a | n/a |
我們來看一下例子:1
2
3
4
5
6
7
8scala> val b: Byte = 10
b: Byte = 10
scala> val s: Short = b
s: Short = 10
scala> val d: Double = s
d: Double = 10.0
如果是資料型態由小轉到大都沒問題,但是如果是大轉小呢?1
2
3
4
5
6
7
8scala> val l: Long = 20
l: Long = 20
scala> val i: Int = l
^
error: type mismatch;
found : Long
required: Int
結果是會出錯的,所以大家在使用這種不是強型態的語言做開發的時候,都需要特別小心。
字串(String)
在 Scala
語言中,字串需要用雙引號包起來。
如:1
2
3
4
5
6
7scala> val hello = "Hello World"
hello: String = Hello World
scala> val sign = "With Regards, \nYour friend"
sign: String =
With Regards,
Your friend
另外,這邊要特別提到,他不像 Java
需要使用 equals
進行比對,使用 ==
就可以了。
如:1
2
3
4
5scala> val hello = "Hello World"
hello: String = Hello World
scala> val matched = (hello == "Hello World")
matched: Boolean = true
當我們需要處理字串的插值(Interpolation)時,我們是怎麼處理的呢?
當我們只是需要進行替換時,在雙引號面前加上 s
請參考:1
2
3
4
5
6
7
8scala> val me = "Greddy"
me: String = Greddy
scala> "Hi, I'm "+me+"."
res3: String = Hi, I'm Greddy.
scala> s"Hi, I'm ${me}."
res4: String = Hi, I'm Greddy.
如果需要進行format時,我們會在雙引號面前加上 f
如:1
2
3
4
5scala> val item = "apple"
item: String = apple
scala> f"I wrote a new $item%.3s today"
res5: String = I wrote a new app today
大家如果想要更了解format的寫法,可以參考
java.util.Formatter
Scala 型態 Overview
此圖片擷取參考書籍Learning Scala
Name | Description. | Instantiable |
---|---|---|
Any | The root of all types in Scala | No |
AnyVal | The root of all value types | No |
AnyRef | The root of all reference (nonvalue) types | No |
Nothing | The subclass of all types | No |
Null | The subclass of all AnyRef types signifying a null value | No |
Char | Unicode character | Yes |
Boolean | true or false | Yes |
String | A string of characters (i.e., text) | Yes |
Unit | Denotes the lack of a value | No |
Tuples
Tuples
是一個可以裝多種資料型態的容器。
語法如下:
( <
value 1
>, <value 2
>[, <value 3
>…] )
範例如下:1
2scala> val info = (1, "Taiwan", true)
info: (Int, String, Boolean) = (1,Taiwan,true)
那我們要如何取值呢?1
2scala> val country = info._2
country: String = Taiwan
如果想要創造兩個值的 Tuples
可以使用 ->
這個符號,這是一個常見在 Tuples
中使用的 key-value 方法。
範例如下:1
2scala> val info = "age" -> 8
info: (String, Int) = (age,8)
這次就先到這邊喔!有問題歡迎寄信給我一起討論喔!~
Donate
謝謝您的支持與鼓勵