1.变量,常量和别名
使用var声明变量,使用let声明常量,常量在声明的时候就需要赋值,且以后不能变动
var name // 错误的声明方式,Type missing
var myName = "Tom"
var age : Int? // 声明为可选类型
var myAge : Int
let NAME = "Jake" //常量的声明
typealias Age = UInt // 为UInt声明了一别名为 Age
var age_1 : Age
var age_2 : Age = 12
2.元组
var score = ( "math", 12, true )
println(score.0 ) //取出元组score中第一个元素,为"math"
元组可以嵌套
var rank = ( 100, 90, "优秀", ( "A", 98, true ))
println(rank.3.0) //打印的结果为 "A"
元组中的元素也可以按照key-value的形式存储,和PHP的array的存储方式相似,上面的下标存储的方式,下标可以看作是key-value中的key:
var subject = ( math : 98, english : "A", chinese: true );
println(subject.math) //打印结果: 98
3.溢出运算
var min = UInt.min // 获得无符整形的最小值
var b = a - 1 // 会导致程序奔溃退出
避免因为运算溢出而导致的程序奔溃,可以使用溢出运算符
var min = Uint.min
var b = a &- 1 //计算得到的b为UInt中最大的值
相似的还有 &+ &/ &*
4.区间运算
for i in 0...10
{ // 全闭区间
println(i); // 会打印0,1,2,....,10总共11个数字
}
for j in 0..<10
{ // 半闭半开的区间
println(j);会打印0,1,2,....,9总共10个数字
}
5.特征相似运算符
var c = a === b // 三个等号为特征相似运算符,只有当a和b指向相同的实例,c才为true
6.空合并运算符
let DNAME = "Tom"
var name :String? // 声明为可选类型
var myName = name ?? DNAME // 若name为nil,则myName取DNAME,否则取name
需要注意的是,name必须为可选类型
7.字符串和数组
var name = "MXD";
var myName = String()
name += ", Hello" //字符串拼接
var food = [ "Fruit-Apple", "Fruit-Orange", "Val-Tomato" ]; //数组
for item in food
{
if( item.hasPrefix("Fruit"))
{
println("Has Prefix");
}
if(item.hasSuffix("e"))
{
println("Has Suffix of e")
}
}
var shoppingList = ["Eggs",12, true]; //数组
for itemin shoppingList
{
println(item);
}
shoppingList.append("newItem") // 利用append()数组添加新的元素
shoppingList += [12, false] // 利用+=批量添加数组元素
shoppingList[0...2] = ["a", "b"] // 替换shoppingList数组中前三个元素
shoppingList.insert("insertItem", atIndex: 2) //在新的元素插入第3个位置
shoppingList.removeRange(0...3) //移除一定范围内的元素
shoppingList.removeAtIndex(1) //移除某一位置上的元素
shoppingList.removeAll(keepCapacity: false)
shoppingList.removeLast() //移除数组中最后一项
8.字典
var dic_0 : Dictionary<String, String> = [:] // 声明了一个空的字典,并指定key-value的格式都是String
var dic_1 : [String : String] // 字典的声明方式
var dic_2 = Dictionary<String, String>(); // 创建了一个字典
var dic_3 = Dictionary<String, Int>(minimumCapacity 4); // 创建了一个最少存储4个元素的字典
var ifEmpty = dic_2.isEmpty // 判断字典是否为空
var person = [
"name":"Tom",
"age":12,
"sex":"female"];
println(person["name"]!); // 字典中取出的value值为可选类型,需要使用强解析才可以拿到值,即加!号
person["address"] ="China Wuhan Hust"; //以key-value方式添加了字典元素
//将person字典中key="name"的元素的value换成"Jake",返回的是替换之前的value
// 若字典中原本没有该key,则以key-value插入字典,返回的则为nil
var oldName =person.updateValue("Jake", forKey:"w");
println(person["w"]);
println(oldName);
for (key, value)in person
{
println("person\(key) AND\(value)");
}
person.removeValueForKey("name")//移除了key="name"的元素
// 字典会根据key和value的值,对其进行类型判断,若类型不单一,则为NSObjectvar keyArr = [String](person.keys)
var valueArr = [NSObject](person.values) // 字典的value的类型不单一,类型为NSObject
println(keyArr)
println(keyArr[0])
println(valueArr)