У меня вопрос к автоматическому закрытию. Например, у нас может быть функция с автоматическим закрытием, подобная этой
func logHello(ifFalse condition: Bool,
message: @autoclosure () -> String
) {
guard condition else {
return
}
print("Assertion failed: \(message())")
}
причина, по которой автоматическое закрытие используется чаще, заключается в том, что мы хотим отложить выполнение замыкания для тела функции, но какой в этом смысл?
У меня может быть что-то вроде этого
func logHello1(ifFalse condition: Bool,
message: String
) {
guard condition else {
return
}
print("Assertion failed: \(message)")
}
вообще не использует замыкание, а только конечный результат, который может дать замыкание. Разве это не лучше?
Я видел, как aotuclosures использовались в утверждении и других реализациях быстрой нативной функциональности, но меня просто озадачивает, почему мы не можем просто передать literal
вместо замыкания?
В чем преимущество использования автоматического закрытия в этом случае?