Swift 中的函数及其外部参数名

稍微学习了一下 Swift 。

Swift 中的函数

函数是一等公民

func stepForward(input: Int) -> Int {
  return input + 1
}

func stepBackward(input: Int) -> Int {
  return input - 1
}

func chooseStepFunction(stepBackwards backwarks: Bool) -> (Int) -> Int {
  return backwarks ? stepBackward : stepForward
}

// 逐步获取
var stepFunction = chooseStepFunction(stepBackwards: true)
var result = stepFunction(100)
println(result)

// 直接调用
println(chooseStepFunction(stepBackwards: true)(122))

外部参数名的忽略

func stepForward(step input: Int) -> Int {
  return input + 1
}

func stepBackward(step input: Int) -> Int {
  return input - 1
}

func chooseStepFunction(stepBackwards backwarks: Bool) -> (Int) -> Int {
  return backwarks ? stepBackward : stepForward
}

// 直接调用原函数时, 需要是用外部参数名
stepBackward(step: 100)

// 直接调用时, 不用外部参数名
println(chooseStepFunction(stepBackwards: true)(122))

// 逐步获取, 不需要外部参数名, 本以为这种方式就能做类似类名推倒了
var stepFunction = chooseStepFunction(stepBackwards: true)
var result = stepFunction(100)
println(result)

虽然觉得这么处理挺丑的, 想想估计是没法应对外部参数名不一致的情况吧.