zoukankan      html  css  js  c++  java
  • Lesson_Swift2

    // Playground - noun: a place where people can play
    
    import UIKit
    
    //=================================================================
    //函数
    //
    //    func 函数名 (参数列表) -> 返回类型 {
    //        代码块
    //    }
    
    
    func sayHi(name: String) -> String {
        return "Hi, " + name
    }
    
    
    var letter = "aeibcd1234"
    //a i b
    //e c d
    //数字
    
    func countLetter(letter: String) -> (Int, Int, Int) {
        var aib = 0
        var ecd = 0
        var num = 0
        
        for c in letter.lowercaseString {
            switch c {
            case "a", "i", "b":
                aib++
            case "e", "c", "d":
                ecd++
            default:
                num++
            }
        }
        
        return (aib, ecd, num)
    }
    
    countLetter(letter)
    
    
    //=================================================================
    //函数类型的变量
    //有点类似之前学过的函数指针
    var funcType: String -> String = sayHi
    funcType("蓝鸥")
    
    func sayBye(name: String) -> String {
        return "Bye! " + name
    }
    
    funcType = sayBye
    funcType("蓝鸥")
    
    //参数没有名字,我们需要添加一个外部形参
    //1.在参数前加一个外部形参名 注:不能在函数中使用外部形参名
    //2.在参数名前加 #
    func personInfo(name personName: String, #sex: String, _age: String = "18") -> String {
        return personName + " " + sex + " " + _age
    }
    
    personInfo(name: "隔壁老王", sex: "男")
    
    //可变参数, 都是相同类型的参数
    func sum(numbers: Float...) -> Float {
        var sum: Float = 0.0
        
        for number in numbers {
            sum += number
        }
        
        return sum
    }
    
    sum(1.0, 2.0, 3.0, 4.0, 5.0)
    
    //如果需要用到参数运算(修改参数的值), 需要在此之前加var修饰
    func hanshu(var a: Int, b: Int) {
        a += 3
    }
    
    var number = 5
    
    var number1 = 5
    var number2 = 3
    
    // inout关键字: 如果说我们改变传递的值,则需要用inout修饰变量
    //传递参数的时候,需要用&
    
    func swap(inout number1: Int, inout number2: Int) {
        var temp = number1
        number1 = number2
        number2 = temp
    }
    
    swap(&number1, &number2)
    number1
    number2
    
    func sixPlus(price: Float) -> Float {
        return price * 0.8
    }
    
    
    //函数类型作为返回值
    //隐藏掉 不希望被人能看到内部的方法
    func changeValue(plus: Bool) -> Int -> Int {
        func plusOne(number: Int) -> Int {
            return number + 1
        }
        
        func minusOne(number: Int) -> Int {
            return number - 1
        }
        
        return plus ? plusOne : minusOne
    }
    
    changeValue(true)
    var cc: Int -> Int = changeValue(false)
    cc(20)
    
    
    //=============================================================
    //闭包
    //闭包跟OC的block一样
    
    //用法
    //{
    //      (参数列表)->返回值 in
    //      闭包的实现
    //{
    
    
    var names = ["Qiaoming", "kan", "taobao"]
    
    var sortedNames1:() = sort(&names, {
        (stringA: String, stringB: String) -> Bool in
        return stringA > stringB
    })
    
    names
    
    
    //去掉类型,通过类型推断自动获取类型
    //单行可以去掉return
    var sortednames2:() = sort(&names, {
        (s1, s2) -> Bool in
         s1 < s2
    })
    
    names
    
    //---------------------------------------
    var sortesNames3:() = sort(&names, {
        return $0 > $1
    })
    // $0表示第一个数 $1表示第二个数
    names
    
    
    //---------------------------------------
    var sortesNames4:() = sort(&names, <)
    names
    
    
    //---------------------------------------
    sort(&names) { (s1, s2) -> Bool in
        return s1 > s2
    }
    names
    
    //=====================================================================
    //类 结构体
    
    /**
        相同点:
        1.都可以定义属性
        2.都可以定义方法,这是swift跟oc的明显的区别之一
        3.都可以定义构造器(初始化方法)
        4.都可以遵循协议
        5.都可以被扩展
    
        不同点:
        1.类可以继承,而结构体不能
        2.类可以被类型推断
        3.类可以通过析构释放内存
        4.类他是引用类型,结构体是值类型
    */
    
  • 相关阅读:
    vue-element-admin中table分页改为前台处理
    vue项目如何部署到Tomcat中
    vuex之modules 热加载(hot update)
    持续学习
    css比较特殊选择器汇总(持续更新)
    关于伪元素before after总结
    ajax入门-实现省份下拉框
    super和this关键字的详解
    监听器
    当浏览器被关闭时,session是否被关闭?
  • 原文地址:https://www.cnblogs.com/newBlash/p/4273613.html
Copyright © 2011-2022 走看看