問題に正しく推測することはできません。タイプは、迅速2.2
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)
:
迅速2.2とXcodeの7.3の下に次のコードを実行し、コンパイラが正しくオプションの種類を推測することができませんXcodeの7.3での私の側に
これは、私は関数に渡す前に、空の文字列と変数を初期化する場合、スイッチはそれがあることを推定し、しかしI am an Int?
を印刷します文字列?
これは、以前のXcodeバージョンでI am a String?
と表示されます。
同様の結果が得られますか?
観察:
この関数シグネチャを使用する場合に同じことが起こる:
func whatAmI(property:AnyObject?)
- バグ -
は、この問題は、SWIFT 2.2の回帰である: https://bugs.swift.org/browse/SR-1024
これは実際にはバグかもしれません。私は 'T'が' String'と推論され、 'Til'は' Int? 'であると見なされますが、'(StringとしてのnilはInt) 'は失敗します。 – Sulthan
Strange:これはSwift 2.1.1で動作します。つまり、プログラムは '私は文字列ですか? ' – tom
バグレポートを提出することをお勧めします。本当に素敵です。 – matt