swift3.0版本的函數(shù)類(lèi)型返回值
swift3.0版本,如果將返回的函數(shù)類(lèi)型值賦給一個(gè)變量,那么這個(gè)函數(shù)類(lèi)型的變量,在測(cè)試時(shí)發(fā)現(xiàn)調(diào)用它可以不用寫(xiě)參數(shù)的名稱(chēng)。好像默認(rèn)就把每個(gè)參數(shù)的外部變量名給忽略了。我有點(diǎn)不明白這里的原理。這個(gè)變量?jī)H僅只是個(gè)函數(shù)類(lèi)型,而不是真正的函數(shù)定義,所以返回的函數(shù)這個(gè)結(jié)果值,它的內(nèi)部函數(shù)聲明被修改了外部參數(shù)名嗎。
func?calc1(weight:?Int)->Int{ ????return?1*weight; } func?calc2(weight:?Int)->Int{ ????return?2*weight; } func?total(_?weight:?Int,?_?price:?Int)->Int{ ????func?switchCalc(weight:Int)->(Int)->Int{ ????????return?weight?>=?20???calc2?:?calc1; ????} ????let?calc?=?switchCalc(weight:?weight); ????return?calc(weight)?+?price?*?weight; ????//這個(gè)地方調(diào)用calc方法時(shí)候?yàn)槭裁床挥脤?xiě)外部參數(shù)名 } var?t?=?total(30,?6);
2016-09-23
直接調(diào)用函數(shù)的時(shí)候就需要寫(xiě)外部參數(shù),比如你直接調(diào)用calc1(weight:5)就一定要,let calc = calc1 這樣定義一個(gè)函數(shù)常亮再調(diào)用的時(shí)候就不需要