我定义了以下身份功能: -
def identity(n: Int) = n
现在我正在定义一个返回此funA
函数的函数identity
: -
def funA(): (Int => Int) = identity
这很好用。基本上,我在这里说我返回的函数实际上接受Int
并返回Int
。
现在我想进一步。我想定义另一个函数funB
,它应返回funA
。我的问题是现在返回类型不是(Int => Int)
。与返回接受funA
并返回Int
的函数的Int
不同,现在我想返回一个函数(funA)
,该函数不接受任何内容并返回函数而不是整数。那么我如何在Scala中以语法形式编写它?
答案 0 :(得分:3)
funA
是一个无参数的方法,返回Int => Int
。因此,作为一个函数,它将具有类型() => (Int => Int)
。如果funB
也是一个返回funA
的无参数方法,它将如下所示:
def funB(): () => (Int => Int) = funA
如果您要进一步(无论出于何种原因),作为一个函数,funB
将具有类型
() => (() => (Int => Int)))
等等..
答案 1 :(得分:0)
def funB(): (()=> Int=>Int) = funA
你不能直接写def funB()= funA,因为这会给funB带来与funA相同的签名。