美文网首页程序员
swift学习-总览-(12/15)

swift学习-总览-(12/15)

作者: littlersmall | 来源:发表于2016-01-04 19:43 被阅读62次

    swift的语法确实蛮奇怪,很多地方看的还是一知半解。
    今天只看了4页,目前看到23页了,学了类,结构,枚举,接口等等。
    学习笔记:
    1 newValue //默认参数newValue,表示新赋给的值
    例如:

    var sideLength : Double = 0.0
    var perimeter : Double {
     get {
     return 3.0 * sideLength
     }
     
     set {
     sideLength = newValue / 3.0
     }
    }
    

    2 类中的函数和一般的函数有一个重要的区别,一般函数的参数名只在函数内部使用。但是类中的函数参数名需要在调用时显示说明(除了第一个参数)。默认情况下,函数的参数名和它在函数内部的名字一样,不过你也可以定义第二个名字,这个名字被用在函数内部。
    例如:

    class Counter {
        var count : Int = 0
        
        func incrementBy(amount : Int, numberOfTimes times : Int) {
            count += amount * times
        }
    }
    
    var counter = Counter()
    counter.incrementBy(2, numberOfTimes : 7)
    print(counter.count)
    

    3 处理变量的可选值时,可以在操作之前加'?',如果?之前的值是nil,则?后面的语句会被忽略,并且整个表达式返回nil。否则?之后的语句会被执行。
    例如:

    var count : Dictionary<String, Int>?
    count = ["1" : 1, "2" : 2]
    
    let num = count?.keys
    print(num)
    

    4 使用protocol来声明一个接口,类,枚举和结构体都能实现接口。使用mutating关键字来标记一个会修改结构体的方法。
    5 使用extension来为现有的类型添加功能,可以使用扩展来给任意类型添加协议,甚至是你从外部或者框架中导入的类型。
    例如:

    protocol Example {
        var simple : String {
            get
        }
        
        mutating func adjust()
    }
    
    class SimpleClass : Example {
        var simple : String = "a simple class"
        
        func adjust() {
            simple += " adjusted in class"
        }
    }
    
    extension Int : Example {
        var simple : String {
            return "int"
        }
        
        mutating func adjust() {
            self += 100
        }
    }
    
    let testClass = SimpleClass()
    testClass.adjust()
    print(testClass.simple)
    
    print(7.simple)
    var x : Int = 8
    x.adjust()
    print(x)
    

    总结:swift还是蛮有趣的,但是内容也够多,后面可以看到的茫茫多的模板,动态,函数式编程,想想都有压力。不过正因为这么多的特性,也说明苹果对这个语言的看重。加油吧。
    犹豫了一天,还是在晚上下单了macbook pro。

    相关文章

      网友评论

        本文标题:swift学习-总览-(12/15)

        本文链接:https://www.haomeiwen.com/subject/dbrahttx.html