在 swift 元组中接受的值

  • 本文关键字:swift 元组 swift tuples
  • 更新时间 :
  • 英文 :


我是 swift 和函数式编程的新手。

我的愚蠢问题如下:

元组可以返回一组函数吗?它是接受的函数吗?

someFunction(param: Bool) -> ((Int) -> Int, (Float) ->Float) -> Double)

感谢您的回复

你可以有任何类型的元组,函数就是类型,所以你可以有函数的元组。

例如,下面是一个包含两个函数的 2 元组,一个接受两个Int并返回一个Int,另一个接受两个Double并返回一个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 关键字,它将是一个函数声明,但括号不匹配。 它看起来最像的是一个函数(someFunction),它接受一个布尔参数,并返回一个函数,该函数本身接受两个函数并返回一个双精度:

func someFunction(param: Bool) -> (Int->Int, Float->Float) -> Double {
    let i = param ? 1 : 2
    // this declares and returns a function that itself takes two functions, 
    // and applies them to pre-determined number
    return { f, g in Double(g(Float(f(i)))) }
}
// h is now a function that takes two functions and returns a double
let h = someFunction(false)
// ~ and + are two unary functions that operate on ints and floats
h(~,+)  // returns -3.0  (which is  +(~2) )

这是否是你的意图,以及你是否有这种功能的用例,我不确定......

最新更新