[英]Empty array can be cast to array of any type
似乎Swift中的空數組可以強制轉換為任何數組類型。
請參見以下示例:
var obj = [Int]()
// compiler warns that this cast always fails, but this evaluates to true
print(obj is [String])
obj.append(3)
// This evaluates to false as expected
print(obj is [String])
這在操場上很容易驗證,但是也會在編譯后的代碼中發生。 這是一個已知的問題?
正如@Hamish指出的,這確實是一個已知問題。 他的評論指向錯誤報告https://bugs.swift.org/browse/SR-6192 。
這種邏輯的解決方法似乎是
type(of: obj) == [SomeType].self
為了擴展上面的示例,
var obj = [Int]()
obj is [String] // true
type(of: obj) == [String].self // false
type(of: obj) == [Int].self // true
obj.append(3)
obj is [String] // false
type(of: obj) == [String].self // false
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.