原文地址:http://blog.csdn.net/hello_hwc/article/details/39782829
一、常量和变量
这里首先说的是,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类型的data