1. 程式人生 > >Scala函式簡單學習

Scala函式簡單學習

楔子

Scala函式簡單學習

demo

package com.zhuzi

import java.util.Date

object Demo_Fun {

  /**
   * 1.方法定義
   *
   *  1.方法定義用def,函式的引數 要寫型別,不寫型別不可以。
   *  2.函式的返回值型別可以不寫,會自動推斷
   *  3.scala會將函式體中最後一行計算的結果當做返回值返回
   *  4.可以寫“return”,寫了return要顯式的宣告方法體的放回型別。
   *  5.定義方法時,如果不寫“=”,那麼無論方法體中最後一行計算的結果返回是什麼,都會被丟棄,返回Unit
   *  6.方法體可以一行搞定,那麼方法體的“{... ...} ” 可以省略不寫
   */
def max(x: Int, y: Int): Int = { if (x > y) { x } else { y } } def max2(x: Int, y: Int) = if (x > y) x else y /** * 2. 遞迴函式 * 遞迴函式要顯式的宣告返回型別 */ def fun(x: Int): Int = { if (x == 1) { 1 } else { x * fun(x - 1) } } /** * 3. 函式的引數有預設值 * */
def sum(x: Int = 100, y: Int = 200) = x + y /** * 4. 可變長的引數函式 */ def funs(s: String*) = { println("_" * 15) s.foreach((ele: String) => { println(ele) }) } /** * 5.匿名函式 * 1."=>"就是匿名函式 * 2.匿名函式呼叫要賦值給一個變數,呼叫直接呼叫這個變數就可以 * 3.匿名函式不能顯式的寫函式返回型別 */ val sum5:
(Int, Int) => Int = (x: Int, y: Int) => { x + y } /** * 6.偏應用函式 * * 偏應用函式是一個表示式,將方法中不變的引數寫上,變化的引數使用“_”表示,下次直接呼叫這個偏應用表示式直接傳入變化的引數就可以 */ def showLog(date: Date, log: String) = { println("date is " + date + ",log is " + log) } val date = new Date() showLog(date, "a") showLog(date, "b") showLog(date, "c") val fun = showLog(date, _: String) fun("aaa") fun("bbb") fun("ccc") /** * 7.巢狀函式 */ def fun7(x: Int) = { def fun1(num: Int): Int = { if (num == 1) { 1 } else { num * fun1(num - 1) } } fun1(x) } println(fun7(5)) def main(args: Array[String]): Unit = { println(max(12, 5)) println(max2(12, 5)) println(fun(3)) println(sum()) //如果 是第二個引數傳遞值,直接寫函式形參(應該可以這麼理解) println(sum(y = 20)) println(funs("hello", "zhuzi")) } }