Swift之類型轉換

來源:互聯網
上載者:User

標籤:

在你的代碼中即使知道整數常量和變數是非負數也用Int類型來通用於所有的整數。在平常情況下使用預設的整數類型意味著整數常量和變數能及時的相互操作,並且能通過整數字面量值來匹配推斷出的類型。

只有在當前任務的一些特定需求時才使用其它整數類型,因為來自外來的資料的大小是明確的,或者是因為效能,記憶體使用量,或者其它必要的最佳化。在這些情況下用大小明確的類型用助於捕獲意外的值溢出和被用於隱式文本所使用的原始值。

整數轉換


對於每種數字類型的常量或變數所能儲存的數位範圍是各不相同的。一個Int8的常量或者變數能儲存從-128到127之間的數字,然後Int的常量或變數能儲存0到255之間的數字。當一個數字在一個整數類型的常量或變數所表述的範圍之外進行賦值時,在編譯代碼時就會報出一個錯誤:

      let cannotBeNegative: UInt8 = -1    // UInt8 不能儲存一個負數

      let TooBig: Int8 = Int.max + 1       // Int8不能儲存比它的最大值還要大的值

因為第個數字類型儲存不同範圍的值,你必須在個別的基礎上選擇加入數字類型轉換。這種選擇機制阻止了隱藏的轉換錯誤協助你作出明確的類型轉換意圖。

把一個指定數字類型轉換成另外一種類型,你可以用這個存在的數字來初始化一個你期望想得到的類型新數字。下邊這個例子中,常量twoThousand在的類型是UInt16,然而,常量one的類型是UInt8,他們不能直接相加在一起,因為他們的類型不一樣。這個例子中可以把one做為初始值調用UInt16(one)來建立一個新的UInt16,用這個新的數字來代替原來的位置。

  let? ?twoThousand?: ?UInt16? = ?2_000

  let? ?one?: ?UInt8? = ?1

  ?let? ?twoThousandAndOne? = ?twoThousand? + ?UInt16?(?one?)

因為加法兩邊都的類型都是UInt16,這種加法是允許的。輸出常量(twoThousandAndOne)的類型被推斷出來是UInt16,因為它是兩個UInt16值的和。

Swift類型初始化時調用預設方法SomeType(初始化值)比如Double(value),Int8(value),並把初始值傳遞給它。在後台,UInt16有一個初始化程式來接收一個UInt8的值,這個初始化程式通過接收到的UInt8的值來建立一個新的UInt16。在這裡不能隨便傳遞一個類型,不管怎樣,它必須提供一個UInt16的類型初始化程式。擴充現有類型提供一個接收新類型的初始化程式(包含自己類型定義)來覆蓋的擴充。

整數和浮點數的轉換

整數和浮點數之間的轉換必須顯示的指明:

      let three = 3

     let pointOneFourOneFiveNine = 0.14159

     let pi = Double(three) + pointOneFourOneFive   // pi = 3.14159 pi的類型為Double

在這裡,常量three的值被用於建立一個類型為Double的新數字,所以在加號的兩邊的類型是一樣的。如果沒有進行轉換,這個加法運算將不能被允許通過。

浮點數轉整數也必須得明確的指明。一個整數可以通過一個雙數度數或一個單精確度數來初始化:

    let integerPi = Int(pi);  // integerPi = 3 類型為Int

當把一個浮點數轉換為一個整數時其浮點數的值最會被截取小數部分。這意味著 4.75 轉換成4,-3.9轉換成-3.

注意:對於數字常量和變數的合并的標準和數字字面量值的合并標準是不同的。字面量3可以直接加字面量0.14159,因為數字字面沒有一個明確的類型,它們的類型只是通過編譯器推斷指明出來的。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

Swift之類型轉換

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.