gpt4 book ai didi

scala - 如何定义接受带有参数的函数的延迟(按名称)参数?

转载 作者:行者123 更新时间:2023-12-03 20:19:15 27 4
gpt4 key购买 nike

我在 David Pollak 的“Beginning Scala” 中看到了一个延迟示例。我试图通过反复试验来适应这一点。这是我所拥有的:

def sayhello() = {
println("hello")
}

def delaying(t: => Unit):Unit = {
println("before call")
t
println("after call")
}

delaying(sayhello())

您将如何延迟带有参数的函数/方法?为什么我在调用 t 时不能使用括号?在哪里可以找到有关延迟函数的更多文档?

最佳答案

t 不必是函数值。它只是任何计算结果为 Unit 的按名称传递的值。

当您在 delaying 函数中声明 t 时,您并未显式调用作为该参数传递的函数。通过声明它,您将强制对按名称传递的参数进行求值,这意味着 sayhello() 在此时进行求值。

没有理由不能在按名称传递参数的函数中使用参数:

def say(word: String) {
println(word)
}

def delaying(t: => Unit) {
println("before call")
t
println("after call")
}

delaying(say("hello"))

唯一一次将参数附加到延迟内的t是它的返回类型(不是Unit而是)一个函数输入参数。

关于scala - 如何定义接受带有参数的函数的延迟(按名称)参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1909026/

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