您好,登錄后才能下訂單哦!
函數的基本用法
一個簡單的函數,如下:
func sayHello(personName:String) -> String {
let s = "你好" + personName + "!"
return s
}
let s = sayHello("iOS")
print(s)
func關鍵字:用于標示,這是一個函數
函數名字:sayHello 應當清晰明了且符合駝峰規則編碼規范
參數列表:(personName:String) personName是參數名,String是這個參數的類型
返回值:-> String 表示返回值是一個字符串類型
函數體:{ } 放置代碼,即函數的執行代碼
函數的參數
函數可以沒有參數:
func sayHello() -> String {
return "你好!"
}
print(sayHello())
可以為函數設置多個參數,如:
func sayHello(personName personName:String, isMale isMale:Bool) -> String {
var s:String;
if ( isMale ) {
s = "你好" + personName + ",帥哥!"
}
else {
s = "你好" + personName + ",美女!"
}
return s
}
print(sayHello(personName: "iOS", isMale: true))
參數的名字:
內部參數名:該參數名只在函數的內部能夠看到,如:
func sayHello(personName:String) -> String {
let s = "你好" + personName + "!"
return s
}
print(sayHello("iOS"))
外部參數名:該參數名還可以在函數的外部看到,如:
func sayHello(personName personName:String) -> String {
let s = "你好" + personName + "!"
return s
}
print(sayHello(personName: "iOS"))
第二個參數及后面的參數,無論第一個參數是否是外部參數,都是外部參數,如:
func sayHello(person1Name:String, person2Name:String) -> String {
let s = "你好 " + person1Name + " and " + person2Name + "!"
return s
}
print(sayHello("iOS", person2Name: "Android"))
后續的參數前添加 “_ "可以打破這一規則
func sayHello(person1Name:String, _ person2Name:String) -> String {
let s = "你好 " + person1Name + " and " + person2Name + "!"
return s
}
print(sayHello("iOS", "Android"))
帶可變參數的函數,如:
func sum(numbers: Int ...) -> Int {
var total = 0;
for n in numbers {
total += n
}
return total
}
print(sum(1,2,3,4,5))
函數的默認參數,如:
func sayHello(personName personName:String, isMale:Bool = true) -> String {
var s:String;
if ( isMale ) {
s = "你好" + personName + ",帥哥!"
}
else {
s = "你好" + personName + ",美女!"
}
return s
}
//print(sayHello(personName: "iOS", isMale: true))
print(sayHello(personName: "iOS"))
函數的默認參數,要遵循從最右邊開始的規則
函數的重載,如:
func sayHello(personName personName:String) ->String {
let s = "你好" + personName + "!"
return s
}
func sayHello(personName personName:String, isMale:Bool) -> String {
var s:String
if ( isMale ) {
s = "你好" + personName + ",帥哥!"
}
else {
s = "你好" + personName + ",美女!"
}
return s
}
print(sayHello(personName: "iPhone”)) // 你好iPhone!
print(sayHello(personName: "iOS", isMale: true)) // 你好iOS,帥哥!
函數重載的依據是:參數列表不同
但要注意函數在重載時,如果參數帶默認值帶來的歧義的情況
參數的可變性:
參數默認都是常量(let),在函數內不能進行修改
可以顯式聲明參數為變量(var),這樣參數在函數內就可以被修改
func factorial(var number:Int) ->Int {
var result:Int = 1
while number > 1 {
result = result * number
number--
}
return result
}
print(factorial(6))
要注意:形參不能修改實參
形參修改實參的辦法:
swift精心設計了inout關鍵字,用于聲明形參是一個出參,實參使用&運算符
func mySwap(inout a:Int, inout b:Int) {
var tem:Int
tem = a
a = b
b = tem
}
var x1 = 10, x2 = 20
mySwap(&x1, b: &x2)
print("x1=\(x1) x2=\(x2)”) // x1=20 x2=10
注意:出參的實參必須是變量、出參不能帶默認值、inout關鍵不能和let及var一期使用
函數的返回值
無返回值:
func mySwap(inout a:Int, inout b:Int) {
var tem:Int
tem = a
a = b
b = tem
}
var x1 = 10, x2 = 20
mySwap(&x1, b: &x2)
print("x1=\(x1) x2=\(x2)”) // x1=20 x2=10
一個返回值:
func factorial(var number:Int) ->Int {
var result:Int = 1
while number > 1 {
result = result * number
number--
}
return result
}
print(factorial(6))
多個返回值(元組):
func count(kids: Dictionary<String, String>) -> (girls:Int, boys:Int) {
var girls = 0, boys = 0
for c in kids.values {
if c == "Girl" {
girls++
}
else if c == "Boy" {
boys++
}
}
return (girls, boys)
}
var k:Dictionary<String, String> = ["AAA":"Girl", "BBB":"Boy", "CCC":"Girl", "DDD":"Girl", "EEE":"Boy"]
var (g, b) = count(k)
print("girls=\(g) boys=\(b)")
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。