• 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(参数标签),
    ab不能在函数体内使用,只能调用时使用

    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
    

      

      

      

  • 相关阅读:
    FTP登录 下载上传文件(太过简单暂时未写)
    依据文档批次命名图片
    UDP协议
    tcp协议(三次握手 四次挥手)
    1956年人工智能元年,而今天是我进入人工智能的日子,哈哈哈
    对比文件简易代码
    爬取网站内容,存放到excel中
    Redis-Py 使用
    python list减法
    sort 使用key函数时,赋多个排序参数
  • 原文地址:https://www.cnblogs.com/LiaoYJ/p/6080895.html
Copyright © 2020-2023  润新知