文章目录
Scala的解释器在解析函数参数(function arguments)时有两种方式:
- 传值调用(call-by-value):先计算参数表达式的值,再应用到函数内部;
- 传名调用(call-by-name):将未计算的参数表达式直接应用到函数内部。
以上是比较严谨的说法。简单解释下,传值调用就是我们常见的方法调用方式,将一个值作为参数传递给方法或函数。java中的方法都是传值调用。传名调用,则是将一个方法作为参数传递给其他方法或函数。
传名调用的参数是方法而非函数,且要求作为参数的方法的参数为空。
来看一个传名参数的例子:
1 | object MyApp extends App { |
总结下传名参数的优势:
- 进行实时运算;
- 如果没有被用到,就可以不必进行运算。