美文网首页Swift学习
Swift4 基础部分:The Basics

Swift4 基础部分:The Basics

作者: Arnold134777 | 来源:发表于2017-07-04 22:54 被阅读194次

    本文是学习《The Swift Programming Language》整理的相关随笔,基本的语法不作介绍,主要介绍Swift中的一些特性或者与OC差异点。

    The Basics

    类型安全(type-safe language)

    Swift is a type-safe language, which means the language
    helps you to be clear about the types of values your code
    can work with. If part of your code expects a String, type 
    safety prevents you from passing it an Int by mistake. 
    Likewise, type safety prevents you from accidentally 
    passing an optional String to a piece of code that expects 
    a nonoptional String. Type safety helps you catch and fix 
    errors as early as possible in the development process.
    
    • Swift 是类型安全的语言,它可以避免我们传入错误的数据类型的数据。

    例子:

    func sayHello(personName: String) -> String {
        let greeting = "Hello, " + personName + "!"
        return greeting
    }
    
    sayHello(personName: 1);
    

    编译报错:

    error: MyPlayground.playground:55:22: error: cannot convert value of type 'Int' to expected argument type 'String'
    sayHello(personName: 1);
                         ^
    

    元组(tuples)

    Tuples group multiple values into a single compound value.
    The values within a tuple can be of any type and do not 
    have to be of the same type as each other. 
    
    • Swift中引入的另外一个特性就是元组,可以包含不同类型的数据在一个元组中,这样我们就可以利用元组满足返回多个不同数据的需求了。

    例子:

    func parseResponse(responData:NSDictionary) -> (code:Int,data:NSString?, message:NSString?){
        let response = (responData["code"],responData["data"],responData["message"]);
        return response as! (code: Int, data: NSString?, message: NSString?);
    }
    
    let responData:NSDictionary = NSDictionary(dictionary: ["code":200, "data":"success", "message":"成功"]);
    let httpResponse = parseResponse(responData: responData);
    let (code,data,message) = httpResponse;
    print("code:\(code)")
    print("data:\(data)")
    print("message:\(message)")
    

    执行结果:

    code:200
    data:Optional(success)
    message:Optional(成功)
    

    可选型(optional)

    You use optionals in situations where a value may be 
    absent. An optional represents two possibilities: Either 
    there is a value, and you can unwrap the optional to 
    access that value, or there isn’t a value at all. 
    
    • Swift中引入了可选型的概念,也就是声明为可选型的变量如果存在数据就解包为对应的数据,如果不存在就为nil。
    You use optional binding to find out whether an optional 
    contains a value, and if so, to make that value available 
    as a temporary constant or variable. Optional binding can 
    be used with if and while statements to check for a value 
    inside an optional, and to extract that value into a 
    constant or variable, as part of a single action. 
    
    • 可选型与if,while的绑定使用,去判断是否存在数据,然后执行相应的操作。

    下面是一个可选型在if语句中的使用例子:

    func sayHello(personName: String?) -> String? {
        if let name = personName{
            return name;
        }
        return "";
    }
    
    print(sayHello(personName: nil));
    print(sayHello(personName: "Arnold"));
    

    执行结果:

    Optional("")
    Optional("Arnold")
    

    nil

    Swift’s nil is not the same as nil in Objective-C. In Objective-C, nil is a pointer to a nonexistent object. In 
    Swift, nil is not a pointer—it is the absence of a value 
    of a certain type. Optionals of any type can be set to 
    nil, not just object types. 
    
    • Swift中的nil不仅可以赋值给对象,还可以赋值给基本的数据类型。
    nil cannot be used with nonoptional constants and variables.
    
    • nil不能被用来赋值给非可选型的数据。

    例子1:

    let num:Int? = nil;
    print("num:\(num)")
    

    执行结果:

    num:nil
    

    例子2:

    let num:Int = nil;
    

    执行结果:

    MyPlayground.playground:67:9: note: add '?' to form the optional type 'Int?'
    let num:Int = nil;
            ^
               ?
    

    初学Swift有错误的地方还希望指正,谢谢!

    相关文章

      网友评论

        本文标题:Swift4 基础部分:The Basics

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