zoukankan      html  css  js  c++  java
  • scala -- 传名参数

    object Test{
      def main(args: Array[String]): Unit = {
    
        def test(code : => Unit){// 传名参数 不计算函数值,而是把函数当作一个整体传进去,在test内部运行该参数函数
          println("start")
          code
          println("end")
        }
        test{
          println("when evaluated")
          println("bb")
        }
        //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@//
        def test1(code: ()=>Unit){ // 普通的传参,也就是传值参数  首先计算参数函数的结果,然后把结果传给test1 函数。
          println("start")
          code() //必须带() 不然不会调用
          println("end")
        }
        test1 {
          println("when evaluated")
          ()=>{println("bb")}
          println("haha")
        }
      }
    
    }
    
    /* 如下为某个人分析的结果
    
    Scala没有什么代码块的概念。这个例子我也看了半天,实际上,在第二例当中,test1的参数是一个表达式。在Scala中,如果将要传入的参数正好是一个,则可以用花括号。这时候test1的参数列表是一个表达式,而这个表达式的结果是最后一行的返回,也就是一个函数() => { println("bb") },它被传给了test1的唯一参数。然后test1方法体执行。至于为什么when evaluated在另外三行之前,是因为它是在传参的时候,求表达式值的副产物。
    其实code :=> Unit就是code : () => Unit,只是第一种是按名传参,用花括号可以把花括号内的所有东西作为一个函数传给code;第二种就是普通传参,但是它刚好只有一个参数。这时候用了花括号,就是花括号内表达式的值传进去了
    */
    // 上面这个例子是  http://scalagroup.group.iteye.com/group/topic/26303  这个地方来的。。
    
  • 相关阅读:
    jQuery 选择器
    DOM 文档对象模型+倒计时
    javascript简单写出国际象棋棋盘
    javascript循环语句及函数
    JAVASCRIPT基础
    用纯CSS做的图片切换
    项目练习总结
    用CSS做的简单弹窗
    CSS布局元素
    jQuery属性/CSS使用例子
  • 原文地址:https://www.cnblogs.com/jijizhazha/p/7220296.html
Copyright © 2011-2022 走看看