Swift简要记录 - 值,类型
Hello, World
1
print("Hello, World") // 不需要分号结尾
变量,常量定义
定义变量 var关键字,直接赋值swift根据值推断类型,显示指定需要变量名后冒号+变量类型
1
2var variable = 100 // 自动推断variable类型是Int
var anotherVar:String = "bugcode.net" // 显式指定变量是字符串常量定义let关键字,类型规则变量定义,赋值后值不可更改
1
2let PAGE_SIZE = 120 // 自动推断
let WINDOW_WID:Double = 80.0 // 指定浮点型swift可以根据定义时的赋值自动推断变量/常量类型,自动推断的前提是定义的赋值给了足够的信息可以让swift推断出类型,如果不能推断,那么就需要显式指定变量的类型。变量/常量可以自动推断类型,但是不会自动隐式的转换类型,如果需要将一种类型转换为另一种类型,需要手动显式转换,即类型名(需要转换的值)
1
var transType = String(12) // 12显式转换成为String类型
tips: print函数输出时,需要格式化时候,只需要将要显示的数据(变量,常量)放到括号中,前面加反斜线即可,一切都在输出字符串内完成即可。
1
2
3var ver = 12.0
let info:String = "http://bugcode.net"
print("ouput information: \(info) version: \(ver)")数组,字典,集合
定义都是使用中括号([])同普通变量常量一样也可以自动推断,也可以显式指定类型。
数组的初始化,三种方式:
1
2
3
4var arrayStr = ["bugcode", "demo", "swift"] // 自动推断为String类型数组
var arrayRepeat = [String](count: 5, repeatedValue:"Ha") // 重复n次的值初始化
let arrayInt:[Int64] = [1, 2, 3] // 显式指定为int64的数组
var arrayOfEmpty= [Float]() // 显式创建空数组,因为空,无数据,需要指定类型数组可以进行加法操作,即二个数组合成一个新的数组
1
2
3var sumOfArray = arrayStr + arrayStr
sumOfArray += ["Objective-C", "C++"]
print(sumofArray)元素的访问,使用下标即可访问对应位置元素,支持区间访问
1
2print("index of arrayStr 2 = \(arrayStr[2])")
print("area of sumOfArray[1...2] \(sumOfArray[1...4]) same as \(sumOfArray[1..<5])")数组操作还内置了大量的方法来操作数组。
tips:
区间操作符号,…三个点表示一个闭区间,..<表示一个开区间
字典初始化
1
2
3
4
5var dictIntString = [1:"swift", 2:"Objective-c"] // 自动推断为[Int:String]
let dictStrStr:[String:String] = ["Addr":"Bejing", "Job":"Coder"] // 显式指定字典类型
var dictOfEmpty = [Int:String]() // 空字典
var emptyDict = [String:String]()
emptyDict = [:]// 同样是空字典字典的元素访问,使用字典的key,相当于把数组的下标换成key,这里需要注意的是,字典访问元素时拿出来的值是optional的(可选值),意思就是拿出来的值可能是nil,所以使用下标key形式的访问字典值会返回一个对应字典value的可选类型,使用类型+?的形式来表示,如:
1
dictIntString[1] // 这个值的类型就是String?
因为对应字典key下的值可能是空的,所以使用optional来表示,也就是如果这个key下的的值存在,这个值就是字典值类型,否则就是nil。所以使用key下标取出的值最好取出选判定一下空值。
1
2
3
4if let x = dictIntString[1]
{
// do someting
}二个重要的字典方法,更新某个key下对应的value,移动某个key对应的字典项,返回值都是之前的对应key下的value值
1
2
3
4
5
6
7
8if let removeValue = dictIntString.removeValueForKey(2)
{
// some code here
}
if let updateOldValue = dictIntString.updateValue("New Value", forKey:3)
{
// some code
}
集合初始化
使用Set关键字
1
2
3var emptySets = Set<String>() // 空集合
var sets:Set = ["1", "2"] // 自动推断
var typeSets:Set<Int> = [314, 1024] // 显式指定类型集合的四种基本操作(截图来自于Apple开发者官网)