Проблемы:Тип опций не может быть корректно выведен в быстрой 2,2
При выполнении следующего кода под Xcode 7.3 с быстрым 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?)
- Bug -
Этот вопрос является регресс в быстром 2.2: https://bugs.swift.org/browse/SR-1024
Это похоже на очень странное поведение, на самом деле это может быть ошибка. Я вижу, что 'T' было выведено как' String' и '(nil as T?) Является Int?' Будет проходить, но '(nil as String?) Является Int?' Будет терпеть неудачу. – Sulthan
Странно: это работает для меня на Swift 2.1.1, то есть программные выходы 'I are String?' – tom
Я бы предложил подать отчет об ошибке. Очень хорошо. – matt