
- Scala 教程
- Scala - 首頁
- Scala - 概述
- Scala - 特性
- Scala - 環境搭建
- Scala - 構建工具 (SBT)
- Scala - 基本語法
- 資料型別和變數
- Scala - 資料型別
- Scala - 變數
- Scala - 字串
- Scala - 陣列
- Scala 運算子
- Scala - 運算子
- Scala - 算術運算子
- Scala - 關係運算符
- Scala - 邏輯運算子
- Scala - 位運算子
- Scala - 賦值運算子
- Scala 條件語句
- Scala - IF ELSE
- Scala 迴圈語句
- Scala - 迴圈語句
- Scala - while 迴圈
- Scala - do-while 迴圈
- Scala - for 迴圈
- Scala - break 語句
- Scala 類和物件
- Scala - 類和物件
- Scala - 訪問修飾符
- Scala 方法和函式
- Scala - 函式
- Scala - 按名稱呼叫函式
- Scala - 帶命名引數的函式
- Scala - 帶可變引數的函式
- Scala - 遞迴函式
- Scala - 預設引數值
- Scala - 高階函式
- Scala - 巢狀函式
- Scala - 匿名函式
- 部分應用函式
- Scala - 柯里化函式
- Scala 集合
- Scala - 集合
- Scala - 列表
- Scala - 集合
- Scala - 對映
- Scala - 元組
- Scala - 迭代器
- Scala - 選項
- Scala 模式匹配
- Scala - 模式匹配
- Scala - 異常處理
- Scala - 提取器
- Scala - 正則表示式
- Scala 檔案 I/O
- Scala - 檔案 I/O
- Scala 高階概念
- Scala - 閉包
- Scala - 特質
- Scala 有用資源
- Scala - 快速指南
- Scala - 線上編譯器
- Scala - 有用資源
- Scala - 討論
Scala - 部分應用函式
呼叫函式時,據說你正在將函式應用於引數。如果你傳遞所有預期的引數,你就已經完全應用了它。如果你只發送一些引數,那麼你將得到一個部分應用的函式。這讓你可以方便地繫結一些引數,而將其餘引數留待以後填充。
試試下面的例子,這是一個簡單的程式,用於演示部分應用函式:
示例
import java.util.Date object Demo { def main(args: Array[String]) { val date = new Date log(date, "message1" ) Thread.sleep(1000) log(date, "message2" ) Thread.sleep(1000) log(date, "message3" ) } def log(date: Date, message: String) = { println(date + "----" + message) } }
將上述程式儲存為 **Demo.scala**。以下命令用於編譯和執行此程式。
命令
C:/>scalac Demo.scala C:/>scala Demo
輸出
Mon Dec 02 12:52:41 CST 2013----message1 Mon Dec 02 12:52:41 CST 2013----message2 Mon Dec 02 12:52:41 CST 2013----message3
這裡,log() 方法接受兩個引數:date 和 message。我們想多次呼叫此方法,使用相同的 date 值但不同的 message 值。我們可以透過將該引數部分應用於 log() 方法來消除每次呼叫都傳遞 date 的冗餘。為此,我們首先將一個值繫結到 date 引數,並透過在其位置放置一個下劃線來留下第二個引數未繫結。結果是一個部分應用的函式,我們已將其儲存在一個變數中。
嘗試以下示例程式,僅使用未繫結的引數 message 呼叫此新方法。
示例
import java.util.Date object Demo { def main(args: Array[String]) { val date = new Date val logWithDateBound = log(date, _ : String) logWithDateBound("message1" ) Thread.sleep(1000) logWithDateBound("message2" ) Thread.sleep(1000) logWithDateBound("message3" ) } def log(date: Date, message: String) = { println(date + "----" + message) } }
將上述程式儲存為 **Demo.scala**。以下命令用於編譯和執行此程式。
命令
\>scalac Demo.scala \>scala Demo
輸出
Mon Dec 02 12:53:56 CST 2013----message1 Mon Dec 02 12:53:56 CST 2013----message2 Mon Dec 02 12:53:56 CST 2013----message3
scala_functions.htm
廣告