В Swift, если замыкание содержит только один оператор, оно автоматически возвращает значение, возвращаемое из этого единственного оператора.
Во всех случаях это не очень естественно. Рассмотрим пример:
func StringReturningFunc() -> String {
return "Test String"
}
// Error: Cannot convert the expressions type '() -> $T0' to type 'String'
let closure: () -> () = {
StringReturningFunc()
}
Как вы можете видеть, хотя закрытие должно вызывать только простую функцию, оно пытается автоматически вернуть возвращаемое значение, которое имеет тип String
и не соответствует типу возврата void
.
Я могу предотвратить это, реализовав тело закрытия таким образом:
let _ = StringReturningFunc()
Что кажется невероятно странным.
Есть ли лучший способ сделать это или это просто то, с чем мне нужно жить?