Scala教學(四)函式
介紹完了參數與表達式,接下來今天要跟大家介紹 Scala
語法中,函式使用方式。
Quick Start
接下來將要分享我的Scala
學習筆記,有任何建議與需要改進的地方,也請大家多多指教。
參考書籍Learning Scala
函式(Functions)
我們會將可以重複使用的程式包成一個函式。對 Scala
或是其他的 functional programming 來說 函式(Functions)
尤為重要。
我們來看以下範例吧:
- 沒有參數的函式
def
<identifier
> = <expression
>
範例:1
2
3
4
5scala> def hi = "hi"
hi: String
scala> hi
res0: String = hi
- 我們一樣可以定義函式的
return type
def
<identifier
>: <type
> = <expression
>
1 | scala> def hi: String = "hi" |
- 定義一個函式
def
<identifier
>(<identifier
>: <type
>[, … ]): <type
> = <expression
>
範例:1
2
3
4
5scala> def multiplier(x: Int, y: Int): Int = { x * y }
multiplier: (x: Int, y: Int)Int
scala> multiplier(3, 4)
res2: Int = 12
- 定義一個有空括號的函式
def
<identifier
>()[: <type
>] = <expression
>
範例:1
2
3
4
5
6
7
8scala> def hi(): String = "hi"
hi: ()String
scala> hi()
res3: String = hi
scala> hi
res4: String = hi
在函式中,使用表達式區塊
如:1
2
3
4
5
6
7
8scala> def formatEuro(amt: Double) = f"€$amt%.2f"
formatEuro: (amt: Double)String
scala> formatEuro(3.4645)
res5: String = €3.46
scala> formatEuro { val rate = 1.32; 0.235 + 0.7123 + rate * 5.32 }
res6: String = €7.97呼叫函式時,可以將參數名稱帶入
如:1
2
3
4
5
6
7
8scala> def greet(prefix: String, name: String) = s"$prefix $name"
greet: (prefix: String, name: String)String
scala> val greeting1 = greet("Mr.", "Chen")
greeting1: String = Mr. Chen
scala> val greeting2 = greet(name = "Chen", prefix = "Mr.")
greeting2: String = Mr. Chen多個參數值(Vararg Parameters)
如:1
2
3
4
5
6
7
8
9scala> def sum(items: Int*): Int = {
| var total = 0
| for(i <- items) total += i
| total
| }
sum: (items: Int*)Int
scala> sum(1, 2, 3)
res0: Int = 6參數群組(Parameter Groups)
Scala
提供了將參數分成群組的概念
範例:1
2
3
4
5scala> def max(x: Int)(y: Int) = if (x > y) x else y
max: (x: Int)(y: Int)Int
scala> val larger = max(20)(50)
larger: Int = 50
這次就先到這邊喔!有問題歡迎寄信給我一起討論喔!~
Donate
謝謝您的支持與鼓勵