问题:
在 Xcode 7.3 和 swift 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)
在我这边使用 Xcode 7.3 这将打印I am an Int?
但是,当我在将变量传递给函数之前用空字符串初始化变量时,开关会推断它是一个字符串?
这将I am a String?
在以前的 Xcode 版本中打印。
你得到类似的结果吗?
观察:
使用此函数签名时也会发生同样的情况:
func whatAmI(property:AnyObject?)
- 漏洞 -
这个问题是 swift 2.2 中的回归: https ://bugs.swift.org/browse/SR-1024