在Scala中调用带有和不带括号的无参数函数以不同的方式执行
发布时间:2020-12-16 18:22:45 所属栏目:安全 来源:网络整理
导读:我有以下Currying函数声明: def logString(count: Int)(fun:() = Unit) { for (n - 1 to count) { fun }} 我用这种方式调用这个函数: logString(3) { () = print("I") } 结果没什么 – 只是没有输出. 然后我只需在“fun”函数调用后添加括号,在Currying函
我有以下Currying函数声明:
def logString(count: Int)(fun:() => Unit) { for (n <- 1 to count) { fun } } 我用这种方式调用这个函数: logString(3) { () => print("I") } 结果没什么 – 只是没有输出. 然后我只需在“fun”函数调用后添加括号,在Currying函数声明体内: def logString(count: Int)(fun:() => Unit) { for (n <- 1 to count) { fun() } } 结果成为预期的结果: III 这是一些Scala错误,还是在学习Scala时我错过了一些规则? 我知道当你声明这样的函数时有规则: 我是对的还是我想念Scala? 解决方法
看看有趣的类型,很有趣:()=>单元.您可以认为这意味着当您使用()调用它时,您将获得Unit作为回报.在没有明确调用它的情况下,fun将函数称为值,而不是调用它的结果.这是高阶函数概念的本质.
如果它有类型的乐趣:=>单位,只是提到乐趣会导致它被执行,在这种情况下,将无法将该函数作为值引用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- ActionBox 弹窗 弹消息 仿照bootstrap modal
- Traefik正在使用traefik.enable = true设置忽略docker
- CobaltStrike 应用教程
- amazon-web-services – 在生产中使用PredictionIO
- bash – 使用SIGINT默认处理程序时从system()返回值
- 使用AngularJs处理Play scala发送的分块数据
- angularjs – 设置多重选择的值isteven of angular js
- 用yum安装JDK
- 为什么这个代码在Scala 2.11中进行了类型检查,我该怎么做呢
- 使用Vagrant触发器在主机上执行bash脚本