swift 函式、函式型別及使用——swift學習(五)
阿新 • • 發佈:2019-02-09
其實函式我們都已經知道的差不多了。所以關於什麼是函式就不再說了,今天直接用程式碼來看看函式的幾種使用:
//自定義函式
//1.無返回值的函式
func test(name:String){}
//2.返回一個返回值
func test2(name:String)->Bool{return true}
//3.返回一個元組
func test3(name:String)->(Int,Bool){
let position = 1
let visible = false
return (position,visible)
}
print("\(test3("a"))")
// 4.引數任意
func test4(nums:Int...)->Int{
var count:Int = 0
for item in nums {
count+=item
}
return count
}
print("\(test4(1,2,3,4))")
//5.在swift3.0之前,要在函式中修改引數,在函式宣告的時候一定要加上var,當然加上var同樣不會把實參也改變,,而只是說形參可以修改。但是在swift3.0之後,如果還是那樣做的話會有警告,這時候就可以使用一個方法,就是在函式中重新定義一個變數就可以了。
var age = 22
func test5(age :Int) {
var age = age
age=age+1
}
print("\(age)")
//6.改變函式傳進去的實參,這裡要注意的是實參一定要是一個變數,並且必須是要取地址符。估計是因為加了inout之後,值會被改掉,所以一定要有一個地址
func test6(inout age:Int){
age+=1
}
var age6 = 22
test6(&age6)
print("\(age6)")
//7.函式型別作為引數使用,
func test7(a:Int,b:Int)->Int{
return a+b
}
func test8(test7:(Int,Int)->Int,a:Int,b:Int) ->Int{
let temp = a+b
return test7(temp,a)
}
print("\(test8(test7,a:1,b:2))")
//8.函式型別為返回值,test9的返回值其實是(Int)->Int,而且扣號可以去掉的。同時我們來看看函式型別。其實很簡單,函式型別就是引數加返回值型別比如一個函式的引數是兩個Int,返回值是一個Int。那麼它的型別就是(Int,Int)->Int。定義一個變數的時候就是let funvVarible:(Int,Int)->Int = test7。所以也有注意一下,這裡初始化或者賦值的時候一定也要是引數型別和返回值型別是一樣的。
func increase(intput:Int)->Int{
return intput+1
}
func reduce(intput:Int) -> Int {
return intput-1
}
func test9(test:Bool)->(Int)->Int{
return test ? increase : reduce
}
let test10 = test9(3>2)
print("\(test10(3))")
//9.內嵌函式,內嵌函式故名思意就是它是函式體內部定義的一個函式,當然它的作用域肯定也只侷限於當前函式內部
func test11(test:Bool)->(Int)->Int{
func increase(intput:Int)->Int{
return intput+1
}
func reduce(intput:Int) -> Int {
return intput-1
}
return test ? increase : reduce
}
let test12 = test11(3<2)
print("\(test12(3))")