初学swift_002

来源:互联网 发布:云南大学软件学院导师 编辑:程序博客网 时间:2024/06/06 23:55

函数

//: Playground - noun: a place where people can playimport UIKit//基本的函数func first() {//无参,无返回    print("first")}first()func first2() -> String {//返回字符串    return "abc"}first2()let r = first2()rlet _ = 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)->Intfunc test1(a: Int,b: Int) -> Int {    return 5}f = test1f(5, 6)let f2: ()-> Voidfunc test2(){}f2 = test2f2()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)rrfunc 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.0outer4ResultResult.1
0 0
原创粉丝点击