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

Scala:如何在var中“存储”一个函数?

发布时间:2020-12-16 19:20:14 所属栏目:安全 来源:网络整理
导读:我正在学习 Scala,我正在尝试将函数存储在var中以便稍后对其进行评估: var action:() = Any = () = {}def setAction(act: = Any) { action = act } 但那不编译: error: type mismatch; found: Any required: () = Any action = act 所以在我看来,在action
我正在学习 Scala,我正在尝试将函数存储在var中以便稍后对其进行评估:

var action:() => Any = () => {}
def setAction(act: => Any) {
    action = act 
}

但那不编译:

error: type mismatch;
found: Any
required: () => Any
action = act

所以在我看来,在action = act而不是分配函数它正在评估它并分配结果.
我不知道如何在不进行评估的情况下分配函数.

谢谢!

解决方法

注意类型“()=>任何”与名称参数不同“=>任何”.键入“()=>任何”是一个不带参数并返回Any的函数,而按名称参数“=>任何”延迟执行参数直到它被使用并返回Any.

所以你需要做的是以下内容:

var action: () => Any = null

def setAction(act: => Any) = action = () => act

setAction(println("hello")) // does not print anything

action() // prints "hello"

setAction(123)

action() // returns 123

(编辑:李大同)

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

    推荐文章
      热点阅读