Я не понимаю, почему система типов позволяет мне это делать?Почему принудительный uwrapped тип с nil не сбой при передаче аргументу функции, который имеет необязательный тип?
Другими словами Я ожидаю, что это сработает, когда foo передается функции.
var foo:String!
func someFunction(_ bar:String?) {
print("-- \(bar) --")
}
someFunction(foo)
=> writes "-- nil --"
Связанный: [Косвенно развернутый опционально правопреемником в Xcode 8] (http://stackoverflow.com/q/39633481/2976878) - [Swift 3 неправильная строка интерполяции с неявно развернутые OPTIONALS] (HTTP: // stackoverflow.com/q/39537177/2976878). В Swift 3, если IUO могут быть проверены типом в качестве сильных опций, они будут. – Hamish
@ Хамиш вы могли бы разместить это в качестве ответа? – mkorpela
Связано также: http://stackoverflow.com/questions/39633481/implicitly-unwrapped-optional-assign-in-xcode-8. –