- 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 - Curry 化函数
- Scala 集合
- Scala - 集合
- Scala - 列表
- Scala - 集合
- Scala - 映射
- Scala - 元组
- Scala - 迭代器
- Scala - Options
- Scala 模式匹配
- Scala - 模式匹配
- Scala - 异常处理
- Scala - 提取器
- Scala - 正则表达式
- Scala 文件I/O
- Scala - 文件I/O
- Scala 高级概念
- Scala - 闭包
- Scala - 特质
- Scala 有用资源
- Scala - 快速指南
- Scala - 在线编译器
- Scala - 有用资源
- Scala - 讨论
Scala - 按名调用函数
通常,函数的参数是按值传递的参数;也就是说,参数的值在传递给函数之前就已经确定。但是,如果我们需要编写一个函数,该函数接受一个参数,我们不希望在函数内部调用之前对该参数进行求值,该怎么办?在这种情况下,Scala 提供了**按名调用**参数。
按名调用的机制将代码块传递给调用,并且每次调用访问参数时,都会执行代码块并计算其值。这里,`delayed` 打印一条消息,表明该方法已进入。接下来,`delayed` 打印一条包含其值的消息。最后,`delayed` 返回 't'。
下面的程序演示了如何实现按名调用。
示例
object Demo { def main(args: Array[String]) { delayed(time()); } def time() = { println("Getting time in nano seconds") System.nanoTime } def delayed( t: => Long ) = { println("In delayed method") println("Param: " + t) } }
将上述程序保存为 **Demo.scala**。使用以下命令编译并执行此程序。
命令
\>scalac Demo.scala \>scala Demo
输出
In delayed method Getting time in nano seconds Param: 2027245119786400
scala_functions.htm
广告