gpt4 book ai didi

scala - 如何将任何函数作为 Scala 包装器方法的输入?

转载 作者:行者123 更新时间:2023-12-04 02:47:00 26 4
gpt4 key购买 nike

假设我想按照以下方式制作一个小包装:

def wrapper(f: (Any) => Any): Any = {
println("Executing now")
val res = f
println("Execution finished")
res
}

wrapper {
println("2")
}

这有意义吗?我的包装方法显然是错误的,但我认为我想做的精神是可能的。我这样想对吗?如果是这样,解决方案是什么?谢谢!

最佳答案

如果您想要您的 wrapper方法在自身内部执行包装方法,您应该将参数更改为“按名称”。这使用语法 => ResultType .

def wrapper(f: => Any): Any = {
println("Executing now")
val res = f
println("Execution finished")
res
}

你现在可以这样做,
wrapper {
println("2")
}

它会打印
Executing now
2
Execution finished

如果您希望能够使用包装函数的返回类型,您可以使您的方法通用:
def wrapper[T](f: => T): T = {
println("Executing now")
val res: T = f
println("Execution finished")
res
}

关于scala - 如何将任何函数作为 Scala 包装器方法的输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2657940/

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