布尔值
Swift有一个基本布尔类型,叫做布尔(bool),布尔值又称逻辑值(logical),因为它只能为真(true)或假(false)。Swift提供了两个布尔常量值:true,false:
1 let orangesAreOrange(橙子是橙子) = true2 let turnipsAreDelicious(芜菁很美味) = false
orangesAreOrange和turnipsAreDelicious被推断为布尔类型,因为它们的值被布尔字面量给初始化了。与前文提到的Int或Double一样,不需要特意为变量或常量声明为bool,只要你在创建时将其值设为true或false即可(值为true或false后,Swift会推断其位bool类型--Joe.Huang)。已知类型的值初始化为常量或变量时,类型推断使Swift代码更简练更具可读性。
在你使用if这样的条件判断语句时,布尔值(bool)非常有用:
1 if turnipsAreDelicious {2 println("Mmm, tasty turnips!")//咦,芜菁真好吃!3 } else {4 println("Eww, turnips are horrible.")//呸呸呸,芜菁太难吃了.5 }6 // prints "Eww, turnips are horrible.//输出 “呸呸呸,芜菁太难吃了.”
诸如if类的条件控制语句详见一章。
Swift的安全类型机制可以避免非布尔值被当做布尔值使用,下面的例子在编译时会报错:
1 let i = 12 if i {3 // this example will not compile, and will report an error4 //这个例子不会被编译,而且会报错 ,因为i是Int型--Joe.Huang5 }
而下面的这个例子会编译通过:
1 let i = 12 if i == 1 {3 // this example will compile successfully4 //这个例子是成功编译的,因为i==1返回true,返回值是bool--Joe.Huang5 }
i == 1 比较的结果类型为 Bool,因此第二个例子可以通过类型检验。i == 1 这类的比较在 基本运算符(暂未译到) 一章讨论。
与 Swift 中的其他类型安全规则一样,这些规则可避免偶然性突发性的错误,并确保各段代码的目的总是明晰的。
类型别名
类型别名(type aliases)是已有类型的可替代性名称(为已有类型提供了一个可替代性的名称),使用关键字typealias定义一个类型别名。
类型别名在你需要为上下文中的已有类型提供一个更贴切的名字时非常有用,例如当处理来自外部数据源的特定宽度的数据时:
1 typealias AudioSample(音频采样) = UInt16
一旦定义完了类型别名,你就可以在其他地方以类型别名替代已有类型的原始名字:
1 var maxAmplitudeFound = AudioSample.min2 // maxAmplitudeFound is now 0 //maxAmplitudeFound(最大振幅)现在是0,基于上例中AudioSample被定义为十六进制的别名后,AudioSample.min就是UInt16.min。--Joe.Huang
此处 AudioSample 作为 UInt16 的别名定义。因为它是别名,因此对 AudioSample.min 的调用实际上是调用 UInt16.min,最终为 maxAmplitudeFound 变量提供一个初始值 0。
谢谢,Swifter-QQ群:362232993,同好者进~
Fork:https://github.com/Joejo/Swift-lesson-for-chinese