美文网首页
Swift基础之The Basics002

Swift基础之The Basics002

作者: 逐水而上 | 来源:发表于2016-06-30 15:15 被阅读3次

    上一篇主要是常量和变量,这篇来看看Swift的数值类型,无非就是整数浮点数之类的啦,然而,子曾经曰过,细节决定成败……gogogo!

    整数

    整数就是没有小数部分的数字,比如42和-23。整数可以是有符号(正、负、零)或者无符号(正、零)。
    Swift 提供了8,16,32和64位的有符号和无符号整数类型。这些整数类型和 C 语言的命名方式很像,比如8位无符号整数类型是UInt8,32位有符号整数类型是Int32。就像 Swift 的其他类型一样,整数类型采用大写命名法

    整数范围

    访问不同整数类型的min和max属性来获取对应类型的最小值和最大值:

    let minValue = UInt8.min  // minValue 为 0,是 UInt8 类型
    let maxValue = UInt8.max  // maxValue 为 255,是 UInt8 类型```
    min和max所传回值的类型,正是其所对的整数类型(如上例UInt8, 所传回的类型是UInt8),可用在表达式中相同类型值旁。
    ######Int
    一般来说,你不需要专门指定整数的长度。Swift 提供了一个特殊的整数类型Int,长度与当前平台的原生字长相同:
    **在32位平台上,Int和Int32长度相同。
    在64位平台上,Int和Int64长度相同。**
    除非你需要特定长度的整数,一般来说使用Int就够了。这可以提高代码一致性和可复用性。即使是在32位平台上,Int可以存储的整数范围也可以达到-2,147,483,648~2,147,483,647,大多数时候这已经足够大了。
    *这是NSInteger么……小样儿,脱了马甲我就不认识你啦?!只不过变短了……短了……这样是不是用起来更舒服呢,呵呵呵呵-。-*
    ######UInt
    Swift 也提供了一个特殊的无符号类型UInt,长度与当前平台的原生字长相同:
    在32位平台上,UInt和UInt32长度相同。
    在64位平台上,UInt和UInt64长度相同.
    > 注意:
    尽量不要使用UInt,除非你真的需要存储一个和当前平台原生字长相同的无符号整数。除了这种情况,最好使用Int,即使你要存储的值已知是非负的。统一使用Int可以提高代码的可复用性,避免不同类型数字之间的转换,并且匹配数字的类型推断,请参考类型安全和类型推断。
    
    *怕麻烦就不要用,反正我是不用,都用Int就好了,世界就和谐了,越短越好。。。*
    ######浮点数
    浮点数是有小数部分的数字,比如3.14159,0.1和-273.15。
    浮点类型比整数类型表示的范围更大,可以存储比Int类型更大或者更小的数字。Swift 提供了两种有符号浮点数类型:
    Double表示64位浮点数。当你需要存储很大或者很高精度的浮点数时请使用此类型。
    Float表示32位浮点数。精度要求不高的话可以使用此类型。
    > 注意:
    Double精确度很高,至少有15位数字,而Float只有6位数字。选择哪个类型取决于你的代码需要处理的值的范围。
    
    ######类型安全和类型推断
    Swift 是一个类型安全(type safe)的语言。类型安全的语言可以让你清楚地知道代码要处理的值的类型。如果你的代码需要一个String,你绝对不可能不小心传进去一个Int。
    
    由于 Swift 是类型安全的,所以它会在编译你的代码时进行类型检查(type checks),并把不匹配的类型标记为错误。这可以让你在开发的时候尽早发现并修复错误。
    
    当你要处理不同类型的值时,类型检查可以帮你避免错误。然而,这并不是说你每次声明常量和变量的时候都需要显式指定类型。如果你没有显式指定类型,Swift 会使用类型推断(type inference)来选择合适的类型。有了类型推断,编译器可以在编译代码的时候自动推断出表达式的类型。原理很简单,只要检查你赋的值即可。
    
    因为有类型推断,和 C 或者 Objective-C 比起来 Swift 很少需要声明类型。常量和变量虽然需要明确类型,但是大部分工作并不需要你自己来完成。
    
    当你声明常量或者变量并赋初值的时候类型推断非常有用。当你在声明常量或者变量的时候赋给它们一个字面量(literal value 或 literal)即可触发类型推断。(字面量就是会直接出现在你代码中的值,比如42和3.14159。)
    
    例如,如果你给一个新常量赋值42并且没有标明类型,Swift 可以推断出常量类型是Int,因为你给它赋的初始值看起来像一个整数
    

    let meaningOfLife = 42
    // meaningOfLife 会被推测为 Int 类型```
    同理,如果你没有给浮点字面量标明类型,Swift 会推断你想要的是Double:

    let pi = 3.14159
    // pi 会被推测为 Double 类型```
    当推断浮点数的类型时,Swift 总是会选择Double而不是Float。
    如果表达式中同时出现了整数和浮点数,会被推断为Double类型:
    

    let anotherPi = 3 + 0.14159
    // anotherPi 会被推测为 Double 类型```
    看起来好牛x的样子哦,又能省去一坨代码了,好开心

    相关文章

      网友评论

          本文标题:Swift基础之The Basics002

          本文链接:https://www.haomeiwen.com/subject/ddxfjttx.html