本文是学习《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有错误的地方还希望指正,谢谢!
网友评论