object ScalaDemo extends App{var n = 10def count:Int = {n -= 1n}def invokeByName(x :  => Int):Unit = {println("start")for (i <- 0 until 3){println("invokeByName x = " + x) //不能使用x()}println("end")}def invokeByName2(x : () => Int):Unit = {println("start")for (i <- 0 until 3){println("invokeByName2 x = " + x())}println("end")}def invokeByValue(x : Int):Unit = {println("start")for (i <- 0 until 3){println("invokeByValue x = " + x)}println("end")}//统一初始化invokeByName{println("begin invokeByName")count}invokeByName2{println("begin invokeByName2")() => {n -= 1n}}invokeByValue{println("begin invokeByValue")count}}

输出

start
begin invokeByName
invokeByName x = 9
begin invokeByName
invokeByName x = 8
begin invokeByName
invokeByName x = 7
end
begin invokeByName2
start
invokeByName2 x = 6
invokeByName2 x = 5
invokeByName2 x = 4
end
begin invokeByValue
start
invokeByValue x = 3
invokeByValue x = 3
invokeByValue x = 3
end

scala的传值参数和传名参数相关推荐

  1. scala控制抽象之传名参数(名调用)

    我们在用scala定义函数时,一般参数都是各种类型的值,这是常见的值调用 但偶尔也有需要把代码块作为参数传入的情况(名调用) 匿名函数经常可以作为函数的参数传入,非匿名函数也行(函数作为返回值返回就更 ...

  2. scala 柯里化+传名参数+递归 实现while关键字功能

    目录 代码实现 解读 代码实现 object Lambda {def main(args: Array[String]): Unit = {def myWhile(condition: => B ...

  3. Scala学习笔记——传名参数和传值参数

    Scala传名参数和传值参数 文章目录 `Scala`传名参数和传值参数 `1.` 定义 `2.` 两者的比较 `3.` 自定义`while`循环 1. 定义 Scala的解释器在解析函数参数(fun ...

  4. Scala 传名参数和传值参数

    Scala 传名参数和传值参数 传名参数 call-by-name 传值参数 call-by-value 在Scala中,当参数通过传值调用函数时,它会在调用函数之前计算一次传入的表达式或参数值.但是 ...

  5. scala的传名参数和传值参数

    传名参数 传值参数 因为Scala建议如果函数的参数只有一个,可以考虑使用{}代替(),因此test和test1的调用都是{},又因为test的参数是传名参数函数,因此传入的参数是不会被执行的,而te ...

  6. Scala语言学习-06-传名参数、传值参数、传函数参数的区别

    一.测试环境 名称 版本 操作系统 win10 CPU 12th Gen Intel® Core™ i7-12700H 内存 16G JDK 1.8.0_171 Scala 3.1.2 二.代码 ob ...

  7. scala的传名参数

    scala如果你想实现像if ,while等类似的控制结构,根本没有值要传入花括号{}直接的代码里.要怎么实现. 比如说,我们要实现一个断言的控制结构,myAssert(), myAssert函数参考 ...

  8. Scala 传名参数、注解

    传名参数 传名参数仅在使用时求值.在类型之前添加=>,即可令参数为传名参数. 定义传名参数 def ggg(kkk: => Int) = kkk * 999 传名参数的优势在于,如果函数体 ...

  9. 【值传递和引用传递之外的第三种传值方式 - 传名参数】

    引言 先看下Scala 的以下方法该如何调用那? class Demo {val assertIsOpen = truedef test(isTrue: () => Boolean): Unit ...

最新文章

  1. Git 创建两个“本地分支”协同工作
  2. 像淘宝、京东这样的大型电商网站服务器构架完全部署解决方案
  3. ZooKeeper私人学习笔记
  4. 【开源项目】基于FFmpeg的封装格式转换
  5. 常识分析 | 为什么 CPU 访问硬盘很慢
  6. 将来时的条件句_58
  7. (转)shiro权限框架详解03-shiro介绍
  8. 计蒜客挑战难题:字符串长度
  9. echo输出不重复行到文件 shell_Shell脚本echo指令使用小技巧
  10. C语言实现String字符串及其函数
  11. java加按钮_剪辑大神都在用的加字幕神器,你知道嘛!
  12. Alfred插件之有道翻译配置过程
  13. python爬虫之获取谷歌浏览器所有cookie
  14. linu上传下载命令
  15. 好用的电子邮箱测评,这么多的邮箱究竟哪个最好用呢?
  16. 与君初相识之Linux与Java SE
  17. 关于微信公众号开发中扫码关注和关注之后继续扫码的不同点
  18. 一个男朋友写给女朋友的信.爆笑(真勇敢)
  19. 电脑解压文件丢失怎么找回来?四种恢复方法
  20. java中映射关系Map

热门文章

  1. Android 条码扫描程序源码
  2. SOCKET CLOSE_WAIT 搜集
  3. CodeForces - 1000C Covered Points Count(差分+思维)
  4. 中国科学院大学计算机与科学技术学院,贺思敏 - 中国科学院大学 - 计算机科学与技术学院...
  5. python中strip是什么意思啊_Python中的strip()的理解
  6. FaceBook机器学习开源DL模块
  7. NOIP2017提高组比赛总结
  8. 网络流媒体协议之——RTSP协议
  9. windbg 符号表
  10. IOCP配合AcceptEx的例子