• 让你看不懂的swift语法


    一、Swift杂谈

    Swift语法出来时间不长,网络上的各种教程已经铺天盖地,可是基本上全部的教程都是来自官方翻译。

    从Swift出来到如今。每天都在学习Swift。以下给出个人感受

    1. Swift中的非常多概念来源于Objective-c(扩展、协议、外部參数名、闭包内存管理等),假设是Objective-c的老手能够非常快入手
    2. Swift融合了众多语言的特性。入手简单可是短时间掌握全部语法还是有困难的
    3. Swift开发应用更加高速,语言简单介绍,包含了非常多的高级特性

    尽管Swift语言非常easy,手机相对于Objective-c要快。可是一些原理的东西还是起源于Objective-c。框架中尽管包含了Swift API,可是API的设计非常多都是苹果特有的,掌握一直到熟练,个人感觉与学习Objective-c不会相差太多。Swift是一个拉开档次的语言,我想他的出现会终结靠Objective-c语法吃饭那些人的高薪。对于那些懂得思想的人,Swift会成为一把利剑。让高手开发起来更加得心应手

    二、那些你看不懂的语法

    Swift的一些语法还是比較有意思的,这里给出几个小的代码片段,測试一下你看懂了没有


    1、隐式类型与拆封(?

    与!)

    let possibleString: String?

    = "An optional string." if possibleString { println(possibleString) } let number1 = possibleString!.toInt() //compile error let number2 = possibleString.toInt()


    2、String是struct。NSString是一个class,他们之间的关系

    var str: String = "str"
    var nsStr: NSString = "NSString"
    var selector: Selector = "selector"
    var selector2: Selector = Selector("")
    
    str = nsStr
    nsStr = str


    3、元组的类型怎么写
    var tuple: (str: Int, str2: Int) = (2, 3)
    tuple.str = 4
    tuple.1 = 2
    let tuple2 = (4, 5)
    //compile error
    let2.0 = 1

    4、闭包声明

    var closurea: (Int, Int) -> Bool = { n1, n2 in return n1 > n2}
    var closureb: (Int, Int) -> Bool = {$0 > $1}

    5、闭包传引用还是复制。以下打印多少

    func add(#number: Int) -> () -> Int {
        var ret = 0
        func incrementor() -> Int {
            ret += number
            return ret
        }
        return incrementor
    }
    
    let incrementor = add(number: 10)
    incrementor()
    incrementor()
    println(incrementor())

    6、auto_closure

    var closure1: @auto_closure () -> Int?

    = {return 3}() var closure2: @auto_closure () -> Int = 3 closure1() closure2()


    7、struct哪行代码出错了

    struct TestStruct1 {
        var test: String = "struct"
    }
    
    let struct1 = TestStruct1(test: "1111")
    struct TestStruct2 {
        var test: String = "struct"
        init() {
            
        }
    }
    //compile error
    let struct2 = TestStruct2(test: "2222")












  • 相关阅读:
    bzoj 1017 魔兽地图DotR
    poj 1322 chocolate
    bzoj 1045 糖果传递
    poj 3067 japan
    timus 1109 Conference(二分图匹配)
    URAL 1205 By the Underground or by Foot?(SPFA)
    URAL 1242 Werewolf(DFS)
    timus 1033 Labyrinth(BFS)
    URAL 1208 Legendary Teams Contest(DFS)
    URAL 1930 Ivan's Car(BFS)
  • 原文地址:https://www.cnblogs.com/gccbuaa/p/6708125.html
Copyright © 2020-2023  润新知