引言

先看下Scala 的以下方法该如何调用那?

class Demo {val assertIsOpen = truedef test(isTrue: () => Boolean): Unit =if (assertIsOpen && !isTrue)throw new Exception("Error!")
}

调用测试

  • 错误调用一

    new Demo().test(3 > 2)
    

    错误原因: 方法参数为 空参切返回值为 Boolean 的函数, 改调用 传递的是 Boolean 类型,类型错误. 等价于 new Demo().test(true)

  • 错误调用二

    new Demo().test( => 3 > 2)
    new Demo().test( _ => 3 > 2)
    

    错误原因: 学费了,Scala 虽然有些地方可以省略 或 简写,但是也没那么随便. 第二行, 完全错误,传的是 一个参数返回 为 Boolean 的函数

  • 正确调

    val func = () => 3 > 2
    new Demo().test(func)new Demo().test( () => 3 > 2)
    

    点定义 函数变量传递, 或省略变量直接传.

    那么Scala 能不能 即省略 () 或 => , 又能实现传递函数的方法那,答案是肯定的.

传名参数

传名参数是区别于 值传递引用传递 的 第三种传递参数的方法.修改以上方法的定义,以 => 开始, 而不是() => 开始 1, 实现如下

class Demo{val assertionIsOpen = truedef test(isTrue : => Boolean) : Unit =if (assertionIsOpen && !isTrue)throw new Exception("Error!")
}
object Demo{def main(args: Array[String]): Unit = {new Demo().test( 3 > 2)}
}

使用以上定义就可以 省略 () =>

【值传递和引用传递之外的第三种传值方式 - 传名参数】相关推荐

  1. 多图证明,Java到底是值传递还是引用传递?

    作者 | 王磊 来源 | Java中文社群(ID:javacn666) 转载请联系授权(微信ID:GG_Stone) 开篇先来曝答案,在 Java 语言中,本质只有值传递,而无引用传递,解释和证明详见 ...

  2. python函数参数的引用传递_Python初学者笔记(八):函数参数的值传递和引用传递...

    函数参数的值传递和引用传递 像我们最熟悉的 C 语言,再写函数参数的同时需要规定函数参数到底是值传递还是引用传递.引用传递导致该参数在函数内的修改出了函数之外也会生效,值传递所有的修改都不会体现到函数 ...

  3. Java是值传递还是引用传递

    Java是值传递还是引用传递 一.概述 在 Java 语言中,本质只有值传递,而无引用传递. 二.值类型和引用类型 值类型就是Java 中的 8 大基础数据类型: 整数型:byte.short.int ...

  4. Golang中的值传递和引用传递

    一.前言 我在刚开始学习golang的时候,被值传递和引用传递困扰了一段时间,因为我之前是学习Java的,深受Java面向对象思想的影响,转成golang的时候就会想不通结构体等类型(看起来像是Jav ...

  5. Java中的值传递和引用传递

    当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?      答:是值传递.Java 编程语言只有值传递参数.当一个对象实例作为 ...

  6. 面试官:Java 到底是值传递还是引用传递?

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 作者:Intopass 来源:知乎,zhihu.com/q ...

  7. Java值传递与引用传递

    Java面试题: 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? 答案基本上是:值传递 说明:得出这种结论的前提必须是&qu ...

  8. python参数传递方法_深入理解python中函数传递参数是值传递还是引用传递

    python 的 深入理解python中函数传递参数是值传递还是引用传递 目前网络上大部分博客的结论都是这样的: Python不允许程序员选择采用传值还是传 引用.Python参数传递采用的肯定是&q ...

  9. Stack Overflow上188万浏览量的提问:Java 到底是值传递还是引用传递?

    来自:沉默王二 在逛 Stack Overflow 的时候,发现了一些访问量像阿尔卑斯山一样高的问题,比如说这个:Java 到底是值传递还是引用传递?访问量足足有 188万+,这不得了啊!说明有很多很 ...

最新文章

  1. Vue_VueRouter
  2. 正则表达式过滤HTML危险脚本
  3. php插件 pycharm_原来Pycharm中有这么多好用的插件|Pycharm精选插件
  4. 【最新】2020年4月学术会议变动汇总
  5. 几个支持生成Python代码的UML工具
  6. 01.计算机体系结构概述.md
  7. ces测试数据测试ces测试数据测试ces测试数据测试ces测试数据测试ces测试数据测试ces测试数据测试ces测试数据测试再次测试
  8. DataGridView很详细的用法
  9. 新功能:在负载均衡SLB控制台上查看DDoS安全防护阈值
  10. vue路由匹配实现包容性_多元化和包容性:停止说话,做作业
  11. Atitit 架构师的技术框架体系图 各种引擎列表 脚本引擎 groovy beanshel php nodejs rhino等 表达式引擎技术 Ognl/MVELl等 通讯, rest 命令解
  12. Intellij IDEA创建第一个项目的视频
  13. android ajax chrome,chrome浏览器ajax请求状态200,response为空的探索
  14. mybatis foreach标签的使用
  15. python设计模式之策略模式
  16. UIDataCollector的下载和使用
  17. 问题事件名称: APPCRASH(解决方法)
  18. JS实现全屏和退出全屏
  19. 音频编码方案之间音质比较(AAC,MP3,WMA等)
  20. C/C++编译器gcc的windows版本MinGW-w64安装教程

热门文章

  1. HDU 1011 Starship Troopers星河战队(树形dp)
  2. Python连接mysql,插入数据时不报错,但是没有插入进去
  3. Vue错误跳坑:npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! newbee@0.1.0 serve: `vue-cli-service serv
  4. 我们为什么要用版本控制
  5. 报错:axis2.AxisFault: Transport error: 401 Error: Unauthorized
  6. 快速利用工具编写博客
  7. 集合Set的用法总结-swif
  8. 入门数据挖掘(二手车交易价格预测案例)(二):特征工程
  9. 无线土壤水分传感器湿度传感器在农业领域中的应用
  10. 使用Chrome浏览器的搜索引擎,谷歌浏览器开启同步功能