1,常量和变量
编译器会自己通过值判断类型,不需要指定,如果明确指定可以用as关键字
声明固定类型的变量则是用 :
let a = 10
var b = "b"
let c = 10.2 as Int
var d : Int
另外,字符串可以使用+=
var string = "ab"
string += "c"
2,字典
字典是一种散列表
声明类型使用AnyObject关键字可以是任何类型
let dic = ["a" : "123" , "b" : "223"]
var mDic = ["a" : 1 , "b" : "ccc"] as [String : AnyObject]
3,结构和类
结构是值类型,类是引用类型
换句话说,对函数传入结构传入的是值,传入类实例则传入的是指针
类可以继承,结构不可以
struct Person{
var firstName, lastName : String
}
class Person{
var firstName, lastName : String
}
4,运算符
==表示值相等,===表示地址一样
运算符可以重载自定义
class Person{
var firstName, lastName : String
var age : Int
}
func == (a:Person ,b:Person) -> Bool{
if a.firstName == b.firstName && a.lastName == b.lastName {
return ture
}
return false
}
postfix func ++ (inout person:Person) -> Person{
person.age++
var person = Person(firstName: person.firstName, lastName: person.lastName, age: person.age)
return person
}
prefix func ++ (inout person:Person) -> Person{
var person = Person(firstName: person.firstName, lastName: person.lastName, age: person.age)
person.age++
return person
}
5,枚举
枚举可以是任何类型,比如字符串
enum Name: String{
case FirstName = "Yan"
case LastName = "Guanyu"
}
使用switch-case去遍历,并且不需要break,会自动break
let name: Name = .FirstName
switch name{
case .FirstName:
case .LastName:
default:
}
使用rawValue获取枚举原始值
在switch-case中加入where逻辑判断
switch name{
case .FirstName where true:
case .LastName where false:
default:
}
6,循环遍历
循环0,1,2
for i in 0..<3{
}
循环0,1,2,3
for i in 0...3{
}
不需要i变量
for _ in 0..<3{
}
循环一个字典
for (key: value) in dictionary{
}
循环一个字符串
for string in "abcdefg"{
}