http://letsswift.com/2014/06/swift_overview/
常量和变量的声明
与c语言不同的是,常量和变量在使用前都需要声明,在Swift中使用let关键词来声明一个常量,var关键词声明一个变量。同样,常量的值是不能够被二次修改的。
可以在一行中声明多个变量或常量,用,号分隔:
var x = 0.0, y = 0.0, z = 0.0
Swift中可以使用几乎任何字符来作为常量和变量名,包括Unicode,比如:
let π = 3.14159
let 你好 = "你好世界"
let = "dogcow"
但是名称中不能含有数学符号,箭头,无效的Unicode,横线-和制表符,且不能以数字开头,尽管数字可以包含在名称里。一旦完成了声明,就不能再次声明相同名称的变量或常量,或者改变它的类型。变量和常量也不能互换。
类型注解
使用:号加空格加类型名在变量或常量名之后就可以完成类型注解。下面的例子就是声明了一个变量叫welcomeMessage,注解类型为字符串String:
var welcomeMessage: String
分号 “:” 在这的作用就像是在说:…是…类型的,因此上述代码可以理解为:
声明一个叫welcomeMessage的变量,它的类型是String
实际编程中很少需要使用类型注解,定义常量或者变量的时候Swift已经根据初始化的值确定了类型信息。Swift几乎都可以隐式的确定变量或常量的类型,如果初始化值没有被给出,所以更好的办法是指定welcomeMessage变量的类型而不是让Swift隐式推导类型。
输出常量和变量
Swift使用println来输出变量或者常量:
println是一个全局函数,用来输出一个值,最后输出一个换行。在Xcode中,println输出在控制台中。print函数也类似,只不过最后不会输出换行。
println函数一般输出一个字符串
println("This is a string")
// prints "This is a string"
println函数还可以格式化输出一些日志信息,就像是Cocoa中NSLog函数的行为一样,可以包括一些常量和变量本身。Swift在字符串中插入变量名作为占位符,使用反斜杠()来提示Swift替换变量/常量名为其实际的值,如:
println(“The current value of friendlyWelcome is \(friendlyWelcome)”) // prints “The current value of friendlyWelcome is Bonjour!”
整数
整数就是像42和-23这样不带分数的数字,包括有符号(正数,负数,0)和无符号(正数,0)。Swift提供了8、16、32和64位的数字形式,和C语言类似,可以使用8位的无符号整数UInt8,或者32位的整数Int32.像其他Swift类型一样,这些类型名的首字母大写。
整数边界
使用min或max值来获取该类型的最大最小值,如:
let minValue = UInt8.min // minValue is equal to 0, and is of type UInt8
let maxValue = UInt8.max // maxValue is equal to 255, and is of type UInt8
- Double类型能表示64位的有符号浮点数。当需要表的数字非常大或者精度要求非常高的时候可以使用Double类型。
- Float类型能表示32为的有符号浮点数。当需要表达的数字不需要64位精度的时候可以使用Float类型。
注 Double 至少有15位小数,Float至少有6位小数。合适的浮点数小数位数取决于你代码里需要处理的浮点数范围。
例如,如果您指定42到一个新的常数变量,而不用说它是什么类型,Swift推断出你想要的常量是一个整数,因为你已经初始化它为一个整数
let meaningOfLife= 42
// meaningOfLife is inferred to be of typeInt
同样,如果你不指定浮点值的类型,Swift推断出你想要创建一个Double:
let pi = 3.14159
// pi is inferred to be of type Double
Swift总是选择Double(而非Float)当它需要浮点数类型时。如果你在一个表达式中把整数和浮点数相加,会推导一个Double类型:
let anotherPi= 3 + 0.14159
// anotherPi is also inferred to be of typeDouble
整型常量可以写成:
- 一个十进制数,不带前缀
- 一个二进制数,用前缀0b
- 一个八进制数,用0o前缀
- 一个十六进制数,以0x前缀
所有如下用这些整型常量都可以来表达十进制值的17:
let decimalInteger= 17
let binaryInteger = 0b10001 // 17 in binary notation
let octalInteger = 0o21 // 17 in octal notation
let hexadecimalInteger = 0x11 // 17 inhexadecimal notation
浮点可以是十进制(不带前缀)或十六进制(以0x前缀),小数点的两侧必须始终有一个十进制数(或十六进制数)。他们也可以有一个可选的指数,由一个大写或小写e表示十进制浮点数表示,或大写/小写p表示十六进制浮点数
带指数exp的十进制数,实际值等于基数乘以10的exp次方,如:
- 1.25e2表示1.25×102,或者125.0.
- 1.25e-2表示1.25×10-2,或者0.0125.
带指数exp的十六进制数,实际值等于基部数乘以2的exp次方,如:
- 0xFp2表示15×22,或者60.0.
- 0xFp-2表示15×2-2,或者3.75.
所有如下这些浮点常量都表示十进制的12.1875:
let decimalDouble= 12.1875
let exponentDouble= 1.21875e1
let hexadecimalDouble= 0xC.3p0
数字值可以包含额外的格式,使它们更容易阅读。整数和浮点数都可以被额外的零填充,并且可以包含下划线,以增加可读性。以上格式都不影响变量的值:
let paddedDouble= 000123.456
let oneMillion= 1_000_000
let justOverOneMillion= 1_000_000.000_000_1
类型之间的转化必须显式声明:
let twoThousand: UInt16 = 2_000
let one: UInt8 = 1
let twoThousandAndOne= twoThousand + UInt16(one)
let three = 3
let pointOneFourOneFiveNine= 0.14159
let pi = Double(three) +pointOneFourOneFiveNine
// pi equals 3.14159, and is inferred to beof typde Double
类型别名
类型别名为现有类型定义的可替代名称。你可以使用typealias关键字定义类型别名。
typealias AudioSample = UInt16
一旦你定义了一个类型别名,你可以在任何可能使用原来的名称地方使用别名:
var maxAmplitudeFound= AudioSample.min
// maxAmplitudeFound is now 0
这里,AudioSample被定义为一个UInt16的别名。因为它是一个别名,调用AudioSample.min实际上是调用UInt16.min,从而给maxAmplitudeFound变量赋初始值0。
http://www.cnblogs.com/wuxian/category/587713.html