- Scala Tutorial
- Scala - Home
- Scala - Overview
- Scala - Environment Setup
- Scala - Basic Syntax
- Scala - Data Types
- Scala - Variables
- Scala - Classes & Objects
- Scala - Access Modifiers
- Scala - Operators
- Scala - IF ELSE
- Scala - Loop Statements
- Scala - Functions
- Scala - Closures
- Scala - Strings
- Scala - Arrays
- Scala - Collections
- Scala - Traits
- Scala - Pattern Matching
- Scala - Regular Expressions
- Scala - Exception Handling
- Scala - Extractors
- Scala - Files I/O
- Scala Useful Resources
- Scala - Quick Guide
- Scala - Useful Resources
- Scala - Discussion
Scala - 函数按名称调用
通常,函数的参数是按值参数;也就是说,参数的值在传递给函数之前就已确定。但是,如果我们需要编写一个函数,该函数接受一个表达式作为参数,而我们不想在函数内调用该表达式之前对其求值,该怎么办?对于这种情况,Scala 提供了按名称调用参数。
按名称调用机制将代码块传递给调用,每次调用访问参数时,都会执行代码块并计算值。此处,延迟打印一条消息,表明已输入该方法。接下来,延迟打印一条消息及其值。最后,延迟返回“t”。
下面的程序展示了如何实现call-by-name。
例子
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