swift是一个基于objc进化过来的一个新的 OS X/IOS编程语言,而objc是基于c语言进化过来的一门编程语言。所以理论上说objc与c++是同一代产物并且objc与c++是相互独立的两套体系,知道这些以后你就不难理解为什么objc与c++混编要把文件名改成mm而objc与c混编不用修改文件名了
在swift中常量用let定义,变量用var定义
定义格式
1 //定义并且不赋值 2 //常量 3 let 标识符 : 数据类型? 4 //变量 5 var 标识符 : 数据类型? 6 //定义且赋值 7 //常量 8 let 标识符 : 数据类型=值 9 //变量 10 var 标识符 : 数据类型=值
特别说一下swift的标识符是用Unicode字符编码表示的,也就是说你出来不能用数字、敏感字段定义变量,其余的各种文字随便用这与objc和c/c++有很大不同。objc和c/c++的标识符是用ASCⅡ码实现的。知道这个原理之后,我做了个实验。
//函数声明 func 测试函数(text:String){ println("\(text)") } //函数调用 测试函数("22222")
编译、执行一切OK
基本类型这一块swift是兼容objc类型的我只对新增类型做一个介绍
swift的数字类型有Integer/Int/Float/Double
Integer类型其实就是objc里的Int8类型
Int/Float/Double 根据运行机器的CPU位数作为变量位数。比如在iPhone5上Int是Int32而在iPhone5s上Int是Int64以此类推
数字表示:
十进制:直接写数字 比如var a =10
二进制:0b加数字 比如 var a=0b1010
八进制:0o加数字 比如 var a=0o12
十六进制:0x加数字 比如 var a= 0x0A
以上这四个变量的十进制表示都是10
swift里的typealias相当于c语言里的typeof
swift里的bool相当于与oc里的BOOL只有两个值:true ,false
swift里的条件判断返回的都是bool
//在c里我们可以这么用if int a=1; if(a) printf("%d",a); //但我们同样的代码放到swift里 var a:Int=1 if a{ println(a)//error }
swift里的tuples当我第一次看到他时,以为他是数组(我X,数组不是Array么?Tuples是什么鬼)仔细一看不是。它既能当数组又能当强类型字典,官方文档里说主要用于函数返回。其实我认为它就是个多功能的结构体(c++),随时使用定义简单
//定义方式1 let a=(15,"age") //输出15 println(a.0) //输出age println(a.1) //定义方式二 let b=(name:"Tony",age:15) //输出name:Tony age:15 println("name:\(a.name) age:\(a.age)")
与其说Optionals是基本类型不如说它是每个基本类型的必要属性,如果有值Optionals为true反之Optionals为false。
var a="123" if let b=a.toInt(){ println(b!) }
如果if后面直接加一个变量是判断这个变量有没有值。 b后面的感叹号是代表b不为nil toInt()函数是把字符串转换为Int类似 你可以把if去掉再把123改成hello试试看会发生什么
调试专用函数assert(条件,字符串)如果条件不成立输出字符串
今天就写这么多,如有错误尽请指教。本人感激不尽