zoukankan      html  css  js  c++  java
  • 让你看不懂的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")












  • 相关阅读:
    jQuery tips
    WCF4.0进阶系列—第十一章 编写代码控制配置和通信 (上)
    WCF4.0进阶系列—第九章 事务支持(上)
    WCF4.0进阶系列第二章 寄宿WCF服务
    WCF4.0进阶系列第五章 在因特网环境下保护WCF服务
    [JavaScript] onkeypress and onchange event
    [JavaScript]使用jQuery定制开发自己的UI
    WCF4.0进阶系列第四章 保护企业内部的WCF服务
    WCF4.0进阶系列第六章 维护服务协定和数据协定
    WCF4.0 进阶系列第一章 WCF简介
  • 原文地址:https://www.cnblogs.com/gccbuaa/p/6708125.html
Copyright © 2011-2022 走看看