Bool Character Int UInt Float Double
UInt8 UInt16 UInt32 UInt64 Int8 Int16 Int32 Int64
PS: 在32位平台上 ,Int与Int32长度相同;在64位平台上 ,Int与Int64长度相同(UInt也类似)
数组、字典和元组 范围 枚举 结构体 类
Array
var shoppingArray = [String]()
var shoppingArray = ["water", "apple", "pine"]
var shoppingDictionary = Dictionary
var shoppingDictionary = [
"Index1" : 1,
"Index2" : 2,
]
let stu1 = (name:"yang", age:20, core:99)
println("show:\(stu1.name) - \(stu1.1)")
let (name,age,core)=("xiao",90,99)
let (name,age,_)=("xiao",90,99)
let r=1..<10
let声明常量 - var声明变量
var num:Int=1
let num=2
var optValue:Int?
var optValue:Int!
var optValue:Optional
var optValue:Int?=nil
optValue?.属性
optValue?.方法
optValue?[] -subscript
字符串模板 "Hello \(变量名)"
optValue!. 认为optValue不为nil,强制解包
二进制0b10001
八进制0o21
十六进制0xa1
单字节 Unicode 标量,写成 \xnn,其中 nn 为两位十六进制数。
双字节 Unicode 标量,写成 \unnnn,其中 nnnn 为四位十六进制数。
四字节 Unicode 标量,写成 \Unnnnnnnn,其中 nnnnnnnn 为八位十六进制数。
(不许隐式转换)
数字到字符串
let str1="result="+String(num)
let str1="result=\(num1+num2)"
整型到浮点型
var intValue:Int=10
var doubValue:Double=Double(intValue)
as 类型转换
as!强制类型转换
as?无的话返回一个nil对象,有的话返回可选类型
条件运算符 问题?答案一:答案二
区间运算符 闭区间 1...5 前闭后开 1..<5 0..cout
恒等运算符 判断两个变量或者常量是否引用同一个实例,还可以判断数组共用相同存储空间 === !===
空合运算符 ?? let username = loginName ?? "Guest"
占位运算符 _ 用于解包类型
分号 不强制使用分号,但多条语句在同一行必须使用分号隔开
if 可选(也可以是隐式解析) {} else {}
if let v1=v11,v2=v22 {}
switch chvar{
case "a" : let x where x ==0
case "b","c":break
default: print("")
}不存在贯穿,不会从一个case到另一个case(需要贯穿加fallthrough)
for var i=0; i<3; ++i{}
for i in 0...3{}
for i in 0..<3{}
for _ in 0..<3{}
字符串 for ch in str {}
数组 for strtmp in strarray{}
字典 for (index1,value1) in shoppingDictionary{}
while n<100 {}
do{} while n<100
func greet(name: String, _ day: String="day1") -> String {} 下划线可省略调用时写外部参数名
func greet() -> Void {}或者func greet() {}
func sum(a:Int, b:Int)->Int{return a++b}
var funcp:(Int,Int)->Int=sum
只有内部参数名,编译器自动为参数创建与内部参数名同名的外部参数名
func mean(numbers: Double...) -> Double{} 可变参数名称为numbers 为[Double]类型
func alignRight(var str: String){ }形参默认为常量
func swapTwoInts(inout a:Int, inout b:Int) {}只能传递变量,有默认值不能标记inout,调用的时候需要在实参前加上&
形式:
{ (parameters) -> returntype in
statements
}
无参数
{statements
}
lazy self super func var let
override
mutating (结构体和枚举)
associatedtype(声明为类型,类似于c++中typename)
typealias(为声明的类型赋与具体类型,类似于c++中using TextFont = struct TTextFont;)
protocol WeightCalculble {
associatedtype WeightType
var weight:WeightType{get}
}
// 这里weight属性的类型就抛出来了, 便于继承协议的类或结构体来定义
class iPhone7 : WeightCalculble {
typealias WeightType = Double
var weight:WeightType{
return 0.1314
}
}
class ship: WeightCalculble {
typealias WeightType = Int
let weight: WeightType init(weight: Int) {
self.weight = weight
}
}
init(参数列表) { 初始化代码 }指定构造器
convenience init() { self.init() }便利构造器,无法直接访问属性,必须通过 指定构造器来初始化属性
deinit { 代码 }
https://github.com/iOS-Swift-Developers