gpt4 book ai didi

scala - 函数参数类型和 =>

转载 作者:行者123 更新时间:2023-12-02 06:16:50 24 4
gpt4 key购买 nike

方法参数的声明到底意味着什么:

def myFunc(param: => Int) = param

上面定义中的=>是什么意思?

最佳答案

这就是所谓的按名称传递。这意味着您正在传递一个应该返回 Int 的函数,但主要用于实现参数的延迟计算。它有点类似于:

def myFunc(param: () => Int) = param

这是一个例子。考虑一个返回一些 Int 值的 answer 函数:

def answer = { println("answer"); 40 }

还有两个函数,一个采用 Int,另一个采用 Int 按名称:

def eagerEval(x: Int)   = { println("eager"); x; }
def lazyEval(x: => Int) = { println("lazy"); x; }

现在使用answer执行它们:

eagerEval(answer + 2)
> answer
> eager

lazyEval(answer + 2)
> lazy
> answer

第一种情况很明显:在调用 eagerEval() 之前,评估 answer 并打印 "answer" 字符串。第二种情况更有趣。我们实际上将一个函数传递给lazyEval()lazyEval 首先打印 "lazy" 并计算 x 参数(实际上,调用作为参数传递的 x 函数)。

另请参阅

关于scala - 函数参数类型和 =>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9508051/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com