swift基础02
函数
声明函数关键字 func,
语法: func 函数名(参数) -> 返回值{}
eg:
//无参无返回值
func frist(){
print("这是我的第一个函数")
}
调用 :func()
//无参,返回值String
func frist2() -> String {
return "abc"
}
//一个Int类型的参数公园 ,返回值是Int类型
func first3(a:int) -> Int {
print(a)
return a+1
}
调用 : frist3(a:4) //frist3(5) 报错,参数名不能省略, 想要忽略参数名,需要在声名参数名时候,在前面在 “_ ” 注意"_"后面必须跟一个空格,否则也是报错
eg:
func first4( _ a:int) -> Int {
print(a)
return a+1
}
func add(firstNumber: Int ,addWithSecond: Int) -> Int {
return firstNumber + addWithSecond
}
add(firstNumber: 3, addWithSecond: 4)
add(addWithSecond: 3,firstNumber: 4)//不能改变顺序
//a,和b成为外部参数,argument label(参数标签),a和b不能在函数体内使用,只能调用时使用
func add(a firstNumber: Int ,b addWithSecond: Int) -> Int {
return firstNumber + addWithSecond
}
add(a:5, b: 6)
/**********可变长度,默认值***********/
//参数可变长度 ,和java ..相同
func add(numbers: Int...) -> Int {
var total = 0
for item in numbers{
total += item
}
return total
}
add(numbers: 1,23,4,5,6)
//参数有默认值
func add(num1: Int =2, num2: Int = 3) -> Int{
return num1 + num2
}
func add2(num1:Int =2, num2: Int = 3, num3: Int) ->Int{
return num1 + num2 + num3
}
函数在swift中是一等公民,意味着与类同级别
let f: (Int,Int) -> Int
func test1(a:Int, b:Int) -> Int {
return a + b
}
f = test1
f(5, 6)
let f2: ()-> Void
func test2(){
print("asd")
}
fe = test2
f2()
func outer(inner:(Int) -> Void){ //以函数作为参数,无返回值
inner(5)
}
func test3(a :Int){
print(a)
}
outer(inner: test3) //调用
函数Demo
func demo(doFilter:(Int) -> Bool) -> [Int]{
let arr = [11,54,88,8]
var result : [Int] =[]
for item in arr{
if doFilter(item){
result.append(item)
}
}
return result
}
func goulv(a: Int) -> Bool {
if a>30 {
return true
}
return false
}
let rr= demp(doFilter: goulv)
/***模仿JQuery 里面的eache***/
func each(handler: (Int,Int)->Void) {
let arr = [1,2,6,8,99,6,33]
for i in 0..<arr.count {
handler(i,arr[i])
}
}
func myHandler(index: Int,value: Int) {
print("index is \(index) value is \(value)")
}
each(handler: myHandler)
func aaa() -> Void {
print("this fun is called outer")
}
func outer2 - > () ->Void{
return aaa
}
func outer3() ->() ->Void{
func bbb() -> Void{
print("this fun is callled outer")
}
return bbb
}
let recFun = outer()
reFun()
outer3()() //outer3是一个无参,返回值为函数的函数, 调用的时候需要在函数后面在加()
func outer4(f:()->Void) -> (Int,Int)->(Int,Int) {
f();
func temp(a: Int,b: Int)-> (Int,Int) {
return(a + b,a * b)
}
return temp
}
func forOuter4() {
print("for outer4")
}
let outer4Result = outer4 (f:forOuter4)
let outer4ResultResult = outer4Result(5,6)
outer4ResultResult.0
outer4ResultResult.1
浙公网安备 33010602011771号