zoukankan      html  css  js  c++  java
  • scala 传值调用,传名调用

    Scala的解释器在解析函数参数(function arguments)时有两种方式:

    • 传值调用(call-by-value):先计算参数表达式的值,再应用到函数内部;
    • 传名调用(call-by-name):将未计算的参数表达式直接应用到函数内部

    在进入函数内部前,传值调用方式就已经将参数表达式的值计算完毕,而传名调用是在函数内部进行参数表达式的值计算的。这就造成了一种现象,每次使用传名调用时,解释器都会计算一次表达式的值。

    传名调用时, 接受表达式的形参定义一般是: block: =>Unit   , 没有形参,返回类型Unit 

    demo:


    def test(code: => Unit) {
    println("start")
    code
    println("end")
    }

    def test1(code: () => Unit) {
    println("start")
    code()
    println("end")
    }

    //开始测试

    test {
    println("when evaluated")
    println("bb")
    }

    println(".................")

    test1 {
    println("bb")
    () => println("when evaluated")
    }

    结果:

    start
    when evaluated
    bb
    end
    .................
    bb
    start
    when evaluated
    end
    

      

      

  • 相关阅读:
    day_03、初识函数
    一、Python简介
    四、列表和元祖
    MinGW安装和使用
    python编码总结
    开博第一篇,学习markdown
    python 2.7.11安装pywin32过程中 停止工作问题
    python读写excel
    关于\r和\n的区别
    1.1 Python for macOS 安装与配置
  • 原文地址:https://www.cnblogs.com/snow-man/p/13156231.html
Copyright © 2011-2022 走看看