真實警告。它可以工作,但編譯器會給出警告',因爲'測試總是爲真。這當然是一個謊言因爲如果該值不是nil
的as
才能成功。「作爲」測試總是在我使用<code>as Int</code>在<code>switch</code>情況下解開一個可選的斯威夫特switch語句
考慮這個最小的,可驗證的例子:
var age: Int?
switch age {
case let y as Int: // warning: 'as' test is always true
print(y)
case nil:
print("it is nil")
}
輸出:
是零
問題:什麼是斯威夫特想着這裏的警告,是有一個更好的方式來打開價值而不必使用武力解開?
試試吧here。
看起來像一個錯誤 - 和[這裏已經提交] (https://bugs.swift.org/browse/SR-1703)。 – Hamish
請注意,指出'print(「\(y)」)是不必要的字符串插值。 – matt
@matt,是的。從一個更復雜的例子中解脫出來就是剩下的。我想我現在可以改正它,因爲沒有答案直接提到它。 – vacawama