本文是学习《The Swift Programming Language》整理的相关随笔,基本的语法不作介绍,主要介绍Swift中的一些特性或者与OC差异点。
系列文章:
Generic Collections
Swift’s array, set, and dictionary types are implemented
as generic collections. For more on generic types and
collections, see Generics.
- Swift中集合的实现都使用到泛型的概念。
Mutability of Collections
If you create an array, a set, or a dictionary, and assign
it to a variable, the collection that is created will be
mutable. This means that you can change (or mutate) the
collection after it is created by adding, removing, or changing items in the collection. If you assign an array,
a set, or a dictionary to a constant, that collection is
immutable, and its size and contents cannot be changed.
- Swift中集合用
let
修饰的就是不可变集合,var
修饰的就是可变集合。
例子:
let threeDoubles = Array(repeatElement(0.0, count: 3));
threeDoubles.append(1.0);
编译失败:
MyPlayground.playground:146:1: note: change 'let' to 'var'
to make it mutable
let threeDoubles = Array(repeatElement(0.0, count: 3));
^~~
var
Arrays
Array Type Shorthand Syntax
The type of a Swift array is written in full as
Array<Element>, where Element is the type of values the
array is allowed to store. You can also write the type of
an array in shorthand form as [Element]. Although the two
forms are functionally identical, the shorthand form is
preferred and is used throughout this guide when referring
to the type of an array.
- Swift集合数组的存在两种方式的写法,推荐使用[Element]的方式。
例子:
var someInts = [Int]();
print("someInts \(someInts.count)");
var otherSomeInts = Array<Int>();
print("someInts \(otherSomeInts.count)");
Iterating Over an Array
以下两种方式都可以使用,特别说明第二种每次遍历拿到的是一个元组(index,value)。
例子:
var colors = ["red","green","yellow"];
for color in colors{
print("color:\(color)");
}
for (index,color) in colors.enumerated(){
print("index:\(index),color:\(color)");
}
执行结果:
color:red
color:green
color:yellow
index:0,color:red
index:1,color:green
index:2,color:yellow
Sets
Hash Values for Set Types
A type must be hashable in order to be stored in a set—
that is, the type must provide a way to compute a hash
value for itself. A hash value is an Int value that is the
same for all objects that compare equally, such that if a
== b, it follows that a.hashValue == b.hashValue.
- Swift中的Sets设计与OC中都一样需要通过
hash
值来与其他的存储数据进行比较。
Dictionaries
Creating a Dictionary with a Dictionary Literal
A key-value pair is a combination of a key and a value. In
a dictionary literal, the key and value in each key-value
pair are separated by a colon. The key-value pairs are
written as a list, separated by commas, surrounded by a
pair of square brackets:
[key 1: value 1, key 2: value 2, key 3: value 3]
- 与OC中字典的赋值存在不同格式,只是搞不懂通用的
{}
为什么Swift中不采用,而是使用[]
(OC,js中都是{}的设计)。