前言 :
Scala 是一個可直譯、編譯、靜態、運行於 JVM 之上、可與 Java 互操作、融合物件導向編程特性與函式編程風格的程式語言. 從一些簡單的語法開始,了解 Scala 的許多特性,所以就算是起步走,東西也夠多了. 簡單的小程式可以使用 scala 指令,編譯的事就交給 scalac,編譯想快點就用 fsc. (Scala 官網), 在簡單的自定義後,將介紹更多的花樣.
簡單的函式 :
在Scala中要定義函式,是使用def來定義,例如,以下是個求最大公因數的函式定義 :
- def gcd(m: Int, n: Int): Int={
- if(n==0)
- return m
- else
- return gcd(n, m % n)
- }
- def gcd(m: Int, n: Int): Int={
- if(n == 0)
- m
- else
- gcd(n, m % n)
- }
- def gcd(m: Int, n: Int): Int = if(n ==0) m else gcd(n, m % n)
- def max(m: Int, n: Int) = if(m>n) m else n
- def max(m: Int, n: Int): Unit = {
- if(m > n)
- println(m)
- else
- println(n)
- }
- def max(m: Int, n: Int) {
- if(m > n)
- println(m)
- else
- println(n)
- }
- def gcd(m: Int, n: Int) {
- if(n == 0)
- println(m)
- else gcd(n, m % n)
- }
- def gcd(m: Int, n: Int): Int = if(n==0) m else gcd(n, m%n)
- assert(10 == gcd(10, 20))
- val max = (m: Int, n: Int) => if(m > n) m else n
- println(max(10, 20))
一個實際的例子就是 Array,它有個 foreach 方法接受一個函式常量,例如,若你想顯示使用者所輸入的命令列引數,則可以如下撰寫,而不用使用 for 運算式 :
每一次從陣列中取出元素,就會呼叫 foreach 所傳入的函式值,在上例中,就是被 x 參考住,而後使用 println() 函式來顯示元素值。之後還會看到更多類似的應用,並會對 一級函式 作更多的介紹
補充說明 :
* Tutorialspoint - Scala Functions
沒有留言:
張貼留言