位置:首頁 > 高級語言 > Swift教學 > Swift類型轉換運算符

Swift類型轉換運算符

類型轉換運算符(Type-Casting Operators)

有兩種類型轉換操作符: as 和 is. 它們有如下的形式:

expression as type
expression as? type
expression is type

as 運算符會把目標表達式轉換成指定的類型(specified type),過程如下:

  • 如果類型轉換成功, 那麼目標表達式就會返回指定類型的實例(instance). 例如:把子類(subclass)變成父類(superclass)時.
  • 如果轉換失敗,則會拋出編譯錯誤( compile-time error)。
  • 如果上述兩個情況都不是(也就是說,編譯器在編譯時期無法確定轉換能否成功,) 那麼目標表達式就會變成指定的類型的optional. (is an optional of the specified type ) 然後在運行時,如果轉換成功, 目標表達式就會作為 optional的一部分來返回, 否則,目標表達式返回nil. 對應的例子是: 把一個 superclass 轉換成一個 subclass.
class SomeSuperType {}
class SomeType: SomeSuperType {}
class SomeChildType: SomeType {}
let s = SomeType()

let x = s as SomeSuperType  // known to succeed; type is SomeSuperType
let y = s as Int            // known to fail; compile-time error
let z = s as SomeChildType  // might fail at runtime; type is SomeChildType?

使用'as'做類型轉換跟正常的類型聲明,對於編譯器來說是一樣的。例如:

let y1 = x as SomeType  // Type information from 'as'
let y2: SomeType = x    // Type information from an annotation

'is' 運算符在“運行時(runtime)”會做檢查。 成功會返回true, 否則 false

檢查不可為已知為true或false在編譯時。下麵是無效的:上述檢查在“編譯時(compile time)”不能使用。 例如下麵的使用是錯誤的:

"hello" is String
"hello" is Int

關於類型轉換的更多內容和例子,請參見: Type Casting.


類型轉換運算符(type-casting-operator)語法
類型轉換運算符 → is 類型 | as ? 可選 類型