最近开始学习swift,把学习的过程和总结整理成一个系列,方便日后回顾总结。
swift中每一行结束后不需要加分号,多个语句在同一行内需要用分好隔开
//表示注释,或者用/* ……*/
常量是指定义之后无法修改值的量,比如设置一个最大尝试登陆的次数,它的值一旦被确定,就不应该在程序中被修改。swift中的常量用let表示,定义方法如下:
let maxAttemptTime = 3 //正确
maxAttemptTime = 4 //错误,常量一旦定义不可以改变
let maxAttemptTime //错误
另外要注意的是,常量在定义的时候必须要赋初值,当然也可以不这么做,后面会详细介绍。
和常量类不同的是,变量用var表示,可以随意改变值
var currentAttemptTime = 1 //正确
currentAttemptTime = currentAttemptTime + 1 //正确
OC中的NSLog方法依然可用,也可以用swift的println()方法。
NSLog("hello world")
println("hello world")
//以上两句等价,输出结果都是"hello world"
//也可以打印变量或者常量
var name = "kt"
NSLog("name = \(name)")
println("name = \(name)")
//以上两句等价,输出结果都是"name = kt"
swift也支持print方法,与println不同的是,println在结尾会自动加上换行符,这与java的语法是一致的。
习惯了oc、c++或者java的程序猿会觉得没有变量的类型很奇怪,其实swift和php与js类似,都是支持类型推导功能的。
所谓的类型推导,就是说swift会根据变量的实际值,自动推导出变量所属的类型。
swift中的基础类型有Int、Double、String、UInt8、Character、Bool等。就不一一解释了。Swift中所有的类型都是首字母大写的。
var name = "kt" //自动推导为String类型
var age = 20 //自动推导为Int类型
var pi = 3.1415926 //自动推导为Double类型
既然swift支持类型推导,那么π的近似值3.1415926,会被推导为什么类型呢?是Float还是Double? 答案是Double,因为swift具有宽类型优先的特性,也就是为自动推导为取值范围更宽泛的类型。
最开始提到必须要给常量或者变量赋初值,如果不想赋初值,或者不习惯自动类型推导,我们还可以显示的给常量或者变量标注类型,这被称为“类型标注”
var name: String //在变量名后加上冒号和类型名来进行类型标注
//经过类型标注后,可以不赋初值
var name: String = "kt" //人为标注为String类型
var age: Int = 20 //人为标注为Int类型
//这种情况下的类型标注有些多此一举
swift支持类型推导,这个功能很方便,与此同时,swift也是严谨的,因为它是类型安全的。
所谓的类型安全是指,不支持常量、变量之间的隐式类型类型转换。
var a = 1
var b = 1.5
var c = a + b //报错
也就是说,不同类型的变量(常量)不可以出现在”+、-、*、/等运算符两侧”。
所谓的常量、变量之间,其实是指字面量之间的隐式类型转换是可以的。比如如下代码:
var pi = 3 + 0.1415926 //这个必须可以啊,否则就乱套了。
如果我希望把整数型和浮点型变量相加怎么办呢,可以使用强制类型转换,又称显式类型转换。
var a = 1
var b = 1.5
var c = a + b //报错
var c = Double(a) + b //正确,得到值为2.5的Double型变量c
var c = a + Int(b) //也正确,得到值为2的Int型变量c
需要说明三点:
通过typelias关键字可以重新命名类型,类似于C语言中的typedef,不过更简单。
typealias Name = String //现在Name类型和String类型是完全一样的了。
var myName: Name = "kt"
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/abc649395594/article/details/47115897