簡體   English   中英

空數組可以強制轉換為任何類型的數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM