几乎全手打,转载请注明出处,尊重别人的劳动成果,谢谢
本人也是swift方面的新手
之前做过一段时间Objective C,提交过APP和SDK,对IOS开发还算入门。看到Swift语言,很喜欢,所以决定完成Swfit的学习
给我的感觉,Swift更像python和java的结合
每周两到三篇的更新,预计两个月内完成《SWIFT入门系列》
在此写blog,方便自己以后查阅,也方便其他同学去入门学习。
这个系列希望是有OOP经验的同学,零基础看的话不适合
强烈建议看这个系列的Blog的时候,开XCode 的playground来看看运行的效果
playground可以动态的给出执行结果
一、常量和变量这里首先说的是,swfit可以使用分号结尾,也可以不使用,但是,一行要执行多个语句,一定要分号
变量声明用var
常量声明用let
常量和变量的名字可以是Unicode字符,但是不能包含数学符号,箭头,保留的字符(例如:while)
let constVar = 10
var tempVar = 11.0
let 黄文臣 = "程序员"
constVar++ //Wrong constVar是常量
tempVar++
println(tempVar)//输出Var并且换行
swift是类型安全的语言,编译器会根据变量或者常量初始化的时候去给它分配一个类型
例如:
let radius = 1 + 0.06//swift会推断出radius是浮点数Double类型
var tempVar:String = "1234" 表示tempvar是一个String类型的变量
一般无需这样声明,因为swift突出一个精简,编译器能做的事情,程序员就不要画蛇添足了
备注:println的输出复杂信息
println("The current output is \(tempVar)")
二、注释
和C++,OC类似,具有以下注释方式
//注释一行
/*
...
*/注释一段
另外,
swfit支持注释嵌套
/*
...
/*...*/
*/
三、数据类型
整数
Int:长度和平台的原声字长相同,即32位的时候,int就和Int32相同,64位机子的时候,就和Int64相同
UInt 和Int类似,只不过无符号//不推荐使用,最好统一使用int,方便类型转换
另外还有
Int8,Int16,Int32,Int64等类型,只不过长度不同
Int.max 返回Int的最大值
Int.min 返回Int的最小值
二进制数:0b
八进制数:0o
十六进制:0x
exp表示10^exp
例如
let binaryInteger = 0b1111
let octalInteger = 0o21
let hexadecmalInteger = 0x21
let expFloat = 1.25e-2// 1.15* 10^-2 = 0.0125
浮点数
Double:64位//精度很大的浮点数
Float:32位 //一般精度的浮点数
在swift中,
整数和浮点数的转换必须显式指定
let four = 4
let varDouble = 0.1111
let tempDouble = Double(four) + varDouble//则,tempDouble为Double类型
布尔值
两个布尔值:true false 分别表示真假
元组(tuples)
多个值表示的一个序列,熟悉Python的同学对这个应该不陌生
let tupleExample = ("Hwc","程序员")
let (name,jop) = tupleExample
println("The jop of \(name) is \(jop)")
可以获得一部分元素,忽略的部分用下划线表示
let (name,_) = tupleExample
也可以使用下标访问
let name = tupleExample.0
let jop = tupleExample.1
元组对于一个函数有多个返回值来说非常有用
可选类型
let var1 = "12"
let intVar1 = var1.toInt()
这里的intVar1就是一个可选类型Int?,问号表示要么intVar存在,他就是一个Int类型,要么intVar1不包含值
用if 可以判断这变量or常量是否含有值,如果含有可以用感叹号!来获取这个值,就是告诉编译器器,我知道这个值存在,你直接把他转换成Int类型,不要是Int?类型
if intVar1!= nil{
let result = intVar1!
}
对一个变量赋值nil,则表示它没有值
nil不能用于非可选类型的变量和常量
例如
var temp:Int?
temp = nil//right
var temp:Int
temp = nil //Wrong
可选绑定
使用可选绑定来判断类型是否包含值,如果包含就把这个值赋给临时常量或变量
常用在if或者while的判断里
例如
如果可以转换为整数,则if条件满足,否则不满足
let intVar = var1.toInt()
if let tempVar = intVar{//Do something else }
隐式解析可选类型
var temp1:Int? = 10
var intAlwaysExist:Int! = temp1
println(intAlwaysExist)//Do not need to use intAlwaysExist! ro check if intAlwaysExist != nil
隐式解析可选类型相对于可选类型的优点是不需要每次都判断可选类型是否存在,然后用解析符号!来取值。
对于一个可以确定以后一直存在的一个值,用隐式解析可选类型是十分有效的。
三、typealias
相当于typedef,类型别名
使用方法:typealias dataType = Int
let data1:dataType = 5//声明一个Int类型的data1