Swift類型轉換運算符
類型轉換運算符(Type-Casting Operators)
有兩種類型轉換操作符: as 和 is. 它們有如下的形式:
expression
astype
expression
as?type
expression
istype
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 ? 可選 類型