我有一个功能
def myInnerFunc(a: Int): Int = a
现在我想把它传递给一个更高阶的函数,我希望它传递给带有参数的初始化的高阶函数,所以需要首先使用正确的参数调用我的内部函数,然后才能将它传递给高阶函数可以组成如下:
def myHigherOrderFunction(func: Int => Int): Int = {
func()
}
所以我需要完成以下代码
myInnerFunc(1) // hmm fix this will actually call my innner function I just want to preinitialize it with one.
func() // didn't work for me how do i run my preinitialized with argument func Int => Int
我不确定如何做到这一点并且无法真正找到相关文档,有人可以提供一个例子吗? (我看到的所有例子都有多个参数,我只有一个参数)
答案 0 :(得分:1)
如果您只是想以某种方式延迟对f的评估,将其包含在另一个函数中,您可以使用匿名函数:
val outer = { () => f(1) }
单个参数currying的原因并不是那么频繁,因为在没有副作用的情况下,这会产生一个常数,这不是那么令人兴奋或有用。
答案 1 :(得分:0)
让我们以相反的顺序提出你的问题:
如何在高阶函数中运行func()?
如果已经提供了参数,则不再需要它,因此myHigherOrderFunction
看起来像这样:
def myHigherOrderFunction(func: Unit => Int): Int = { func() }
如何使用参数1预先初始化myInnerFunc而不运行它?
所以你需要Unit => Int
类型的东西。
val thunk: Unit => Int = { _ => myInnerFunc(argument) }