- 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
广告