下面的工作表代码定义了两个函数。
fun接受类型为Int => Int
的函数参数并调用该函数
参数值为2
funParam
接受Int参数并返回此参数+ 3。
这是一个人为的例子,因此可以直观了解函数的传递方式 在编写功能代码时。
object question {
println("Welcome to the Scala worksheet") //> Welcome to the Scala worksheet
def fun(f : Int => Int) = {
f(2)
} //> fun: (f: Int => Int)Int
def funParam(param : Int) : Int = {
param + 3
} //> funParam: (param: Int)Int
fun(funParam) //> res0: Int = 5
}
为什么我不能使用以下内容:fun(funParam(3))
这会导致编译器错误:type mismatch; found : Int required: Int => Int
这是否意味着我无法调用功能"有趣"将变量传递给funParam? 这是我尝试使用fun(funParam(3))尝试实现的,也许有一种实现这个目的的方法?
答案 0 :(得分:0)
如果我理解正确,你可以使用:
val res = fun(_ => funParam(3))
println(res) // 6
您无法将Int
类型的值(调用funParam(3)
的结果)传递给fun
哪个参数类型为Int => Int
({{1} }})。
答案 1 :(得分:0)
为什么我不能使用类似:fun(funParam(3))这会导致编译器
error : type mismatch; found : Int required: Int => Int
因为funParam(3)
评估为Int
类型的值,但fun
采用Int => Int
类型的函数