我是一个快速和功能性编程的全新手。
我的愚蠢问题如下:
元组可以返回一组函数吗? 是否接受了这样的功能?
someFunction(param: Bool) -> ((Int) -> Int, (Float) ->Float) -> Double)
感谢您的回复
答案 0 :(得分:0)
你可以有一个任何类型的元组,函数是类型,所以你可以有函数元组。
例如,这里有两个函数的2元组,一个需要两个Int
并返回一个Int
,另一个需要两个Double
并返回一个{{ 1}}:
Double
当你说,“一个元组能否返回一组函数?”,我猜你的意思是“一个函数能否返回一个函数元组?”。答案也是肯定的:
// a 2-tuple of the addition functions for ints and doubles
let tupleOfFunctions: ((Int,Int)->Int, (Double,Double)->Double) = (+,+)
但是,你的例子有点混乱 - 如果你在前面添加了一个func returnTwoFunctions(param: Bool) -> ((Int,Int)->Int, (Double,Double)->Double) {
// use the argument to drive whether to return some addition
// or some subtraction functions
return param ? (+,+) : (-,-)
}
关键字,它就是一个函数声明,但你的括号不匹配。它看起来最像是一个函数(func
),它接受一个布尔参数,并返回一个函数,该函数本身接受两个函数并返回一个double:
someFunction
这是否是你想要的,以及你是否有这种功能的用例,我不确定......