問題:
Swift 2.2 を使用して Xcode 7.3 で次のコードを実行すると、コンパイラはオプションの型を正しく推測できません。
import Foundation
func whatAmI<T>(inout property:T?)
{
switch property {
case is Int?:
print("I am an Int?")
case is String?:
print("I am a String?")
default:
print("I don't know what I am")
}
}
var string : String?
whatAmI(&string)
Xcode 7.3を使用している私の側では、これが印刷されますI am an Int?
ただし、変数を関数に渡す前に空の文字列で変数を初期化すると、スイッチはそれが String? であると推測します。
これはI am a String?
、以前の Xcode バージョンで出力されます。
同様の結果が得られていますか?
所見:
この関数シグネチャを使用すると、同じことが起こります。
func whatAmI(property:AnyObject?)
- バグ -
この問題は、swift 2.2 の回帰です: https://bugs.swift.org/browse/SR-1024