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 } 但那不编译:
所以在我看来,在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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |