初学swift_002

函数

//: Playground - noun: a place where people can play

import UIKit

//基本的函数

func first() {//无参,无返回

    print("first")

}

first()

func first2() -> String {//返回字符串

    return "abc"

}

first2()

let r = first2()

r

let _ = first2() //下划线忽略不管

func first3(a:Int) ->Int {

    print(a)

    return 5

}

first3(a: 4)

//first3(3) //不能省略a

//subString(startIndex:1,length:3)swift的语法理念是语法越长越容易理解和阅读

func add(firstNumber: Int ,addWithSecond: Int) -> Int {

    return firstNumber + addWithSecond

}

add(firstNumber: 3, addWithSecond: 4)

//add(addWithSecond: 6, firstNumber: 5 )//不能改变顺序

//参数忽略的问题

func add(_ firstNumber: Int ,addWithSecond: Int) -> Int {

    return firstNumber + addWithSecond

}

add(5, addWithSecond: 6)

func add(_ firstNumber: Int ,_ addWithSecond: Int) -> Int {

    return firstNumber + addWithSecond

}

add(50, 6)

//a,和b成为外部参数,argument label(参数标签)

//a和b不能在函数体内使用,只能调用时使用

func add(a firstNumber: Int ,b addWithSecond: Int) -> Int {

    return firstNumber + addWithSecond

}

add(a:5, b: 6)

/************  可变长度,默认值 */

//code snippet

//参数可变长度

func add(numbers: Int...) -> Int {

    var total = 0

    for item in numbers {

        total += item

    }

    return total

}

add(numbers: 1,2,3)

//参数有默认值

func add(num1: Int = 2,num2: Int = 3) ->Int{

    return num1 + num2

}

add(num1: 5)

add(num1: 2, num2: 5)



add()

add(num1: 5, num2: 6)

add(num2: 3)

//add(num2: 5, num1: 6) //不能改变顺序

func add(num1: Int = 2,num2: Int = 3,num3: Int) ->Int{

    return num1 + num2 + num3

}

add(num3: 5)

add(num1: 1, num2: 2, num3: 3)

add(num1: 4,  num3: 6)

/******* 函数类型

 在swift中,函数是第一等的公民,意味着与类同级别

 */

let f: (Int,Int)->Int

func test1(a: Int,b: Int) -> Int {

    return 5

}

f = test1

f(5, 6)

let f2: ()-> Void

func test2(){



}

f2 = test2

f2()

func outer(inner:(Int)->Void) {//函数作为参数传递进去

    inner(5)

}

func test3(a: Int)  {

    print(a)

}

outer(inner: test3)

func demo(doFilter:(Int)-> Bool ) ->[Int]{

    let arr = [1,2,6,8,99,6,33]

    var result :[Int] = []

    for item in arr {

        if doFilter(item){

            result.append(item)

        }



    }

    return result

}

func guolv1(a: Int) -> Bool {

    if  a > 30  {

        return true

    }

    return false

}

func guolv2(a: Int) -> Bool {

    if  a % 2 == 0  {

        return true

    }

    return false

}

let rr = demo(doFilter: guolv2)

rr

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 called outer")

    }

    return bbb

}

let recFun = outer2()

recFun()

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值