swift Day04
2016-05-14 本文已影响16人
michaeljacc
近期看这些书,越发觉得英语很重要
函数fiction 格式 fund funcName(paraNamed : type, ... ) ->返回值
fun isNameHello (name : String...) ->String{
return name + hello
}
isNameHello(wjw)
fun findLargestBalance(balances : Double...) -> Double{
var result = -Double.infinity
for balance in balances{
if result < balances{
result = balances
}
}
return result
}
- balance除了平衡还有余额,
- 参数名后有更多的参数传入可用...表示
- infinity是无穷的意思
函数可以返回函数,函数可以作为参数传递给另一个函数
函数嵌套函数,把一些函数储藏在函数内部 隐蔽性
嵌套函数代码
func bankVault(passcode : String) -> String {
func openBankVault(Void) -> String {
return "Vault opened"
}
fun closeBankVault(Void) ->String{
return "Vault closed"
}
if passcode == "secret" {
return openBankVault()
}else{
return closeBankVault()
}
}
print(bankVault("wrongscret"))
屏幕快照 2016-05-14 下午10.15.40.png
嵌套函数可以避免不必要的功能,打开或关闭金库的唯一方法是通过bankVault函数, 执行这些功能被隔离到函数bankVault中.
func writeCheck(payee : String = "Unknow", amout : String = "10.00") -> String {
return "check payable to " + payee + "for $" + amout
}
writeCheck()
writeCheck("michaeljacc", amout: "20")
//第一个参数不要表名参数名,第二个参数需要表明函数名称 即amout
我不懂为什么不两个都加上参数名.按照Apple的说法,这样可以提高代码的可读性,我们可以管上面的调用读作:whriteCheck michaeljac and amout20。
默认参数是Unknow和10
注意:第一个参数不要表名参数名,第二个参数需要表明函数名称 即amout
定义writeCheck的时候,我们使用的payee和amout在Swift里叫做InnerName,即参数的内部名字,这个名字主要用来帮助函数的实现者实现函数逻辑。其实,函数参数还有一个OuterName,函数的调用者使用OuterName向函数传递参数。只不过,默认情况下,函数参数的InnerName和OuterName是相等的。
func writeCheck( from payee : String = "Unknow", total amout : String = "10.00") -> String {
return "check payable to " + payee + "for $" + amout
}
writeCheck()
writeCheck("michaeljacc", amout: "20")
from和total就是outName(外部参数)
闭包closure
与函数密切相关,
swift闭包结构
{ (parameters) -> return_Type in
statement
}