-1
我有以下枚舉:用於類型轉換關聯類型的guard case的單個表達式?
enum JSONData {
case dict([String:Any])
case array([Any])
}
我想這樣做使用後衛的情況下,讓有型鑄造匹配分配模式。我不僅要確保someData
是.array
,而且它的關聯類型是[Int]
而不僅僅是[Any]
。這是可能的一個單一的表達?類似如下:
let someData: JSONData = someJSONData()
guard case let .array(anArray as [Int]) = someData
else { return }
但上述不編譯;錯誤是downcast pattern value of type '[Int]' cannot be used
。我知道這是可能的以下,但我寧願做一個單一的表達如果可能的話。
guard case let .array(_anArray) = someData, let anArray = _anArray as? [Int]
else { return }
我想說'case .array(let x as [Int])''但我不在電腦附近! –
不,同樣的錯誤 – BallpointBen
如果它是一個switch語句,我認爲你可以使用where子句'case .array(let x),其中x是[Int]',可能還有防範。 –