加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Scala:为什么List [=> Int]不起作用?

发布时间:2020-12-16 09:01:07 所属栏目:安全 来源:网络整理
导读:我一直在努力学习 scala的来龙去脉,最近我遇到了一些我很好奇的事情. 据我所知,如果我想将一块有效延迟评估的代码传递给一个函数,(不进行现场评估)我可以输入: def run(a: =Int):Int = {...} 从这个意义上说,函数run接收一个尚未被评估的代码块,它会对其进
我一直在努力学习 scala的来龙去脉,最近我遇到了一些我很好奇的事情.

据我所知,如果我想将一块有效延迟评估的代码传递给一个函数,(不进行现场评估)我可以输入:

def run(a: =>Int):Int = {...}

从这个意义上说,函数run接收一个尚未被评估的代码块,它会对其进行求值并返回计算出的Int of.然后我尝试将这个想法扩展到List数据结构.打字:

def run(a: List[=>Int]) = {...}

但是,这会返回错误.我想知道为什么这是不允许的.除了通过这种语法,我可以如何传递未经评估的代码块列表?

解决方法

=> Int是按名称参数的语法. => Int不是类型,因此不能用作List的参数.但是,()=> Int是一种类型.这是返回Int的nullary函数的类型.这样可行:

def run(a: List[()=>Int]) = {...}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读