鍍金池/ 問答/iOS/ Swift 函數(shù)變量的默認(rèn)參數(shù)值

Swift 函數(shù)變量的默認(rèn)參數(shù)值

求教將一個(gè)函數(shù)指定給一個(gè)變量以后,原函數(shù)的默認(rèn)參數(shù)值就丟失了,如何保證這個(gè)變量還能使用該函數(shù)的默認(rèn)參數(shù)呢?

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
回答
編輯回答
落殤

是這樣的,下面的例子更能清晰表達(dá)這個(gè)過程:

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))

這個(gè)變量的類型是個(gè)通用函數(shù),但
如果把賦值的那一句改成 let f: (Int, Int=10) -> Int = test 編譯器會(huì)直接報(bào)錯(cuò) “Default argument not permitted in a tuple type” , 即函數(shù)本身為變量類型時(shí),不允許帶默認(rèn)值,因此你的程序在編譯中已經(jīng)自動(dòng)丟掉了默認(rèn)值,所以到最后一步出錯(cuò)。我用的是Swift 4.0

2017年7月25日 15:50