美文网首页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