Swift 函数变量的默认参数值

新手上路,请多包涵

求教将一个函数指定给一个变量以后,原函数的默认参数值就丢失了,如何保证这个变量还能使用该函数的默认参数呢?

import Foundation

func test(_ a:Int,b:Int=10)->Int{
    return a * b
}

print(test(2))
//20

//assign func test to a variable
var f = test

print(f(2))
//error: missing argument for parameter #2 in call
阅读 5.7k
1 个回答

是这样的,下面的例子更能清晰表达这个过程:

import Foundation

func test(_ a:Int, _ b:Int=10)->Int{
  return a * b
}

print(test(2))
//20

//assign func test to a variable
let f: (Int, Int) -> Int = test

print(f(2, 3))

这个变量的类型是个通用函数,但
如果把赋值的那一句改成 let f: (Int, Int=10) -> Int = test 编译器会直接报错 “Default argument not permitted in a tuple type” , 即函数本身为变量类型时,不允许带默认值,因此你的程序在编译中已经自动丢掉了默认值,所以到最后一步出错。我用的是Swift 4.0

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进