Connect with us

Программирование

Понимаем @discardableResult в Swift

Атрибут @discardableResult в Swift является ценным инструментом для улучшения читаемости кода и управления функциями, возвращающими значения, которые не всегда нужно использовать.

Фото аватара

Опубликовано

/

     
     

Swift известен тем, что в нем большое внимание уделяется безопасности типов и читаемости кода. Одним из свойств, соответствующих этим принципам, является атрибут @discardableResult. Этот атрибут позволяет пометить возвращаемое значение функции как «отбрасываемое» (discardable), что означает возможность игнорировать возвращаемое значение, не выдавая предупреждения компилятора. В этой статье мы рассмотрим, что такое отбрасываемый результат, почему он полезен и как эффективно использовать его в Swift.

Что такое отбрасываемый результат?

В Swift, когда вы вызываете функцию, возвращающую значение, компилятор ожидает, что вы что-то сделаете с этим значением. Однако существуют сценарии, в которых возвращаемое значение может быть не нужно, и его отбрасывание не представляет проблемы. В качестве примера можно привести функции, выполняющие действия, результат которых не нужен немедленно, например, логирование или уведомление.

Атрибут @discardableResult используется для указания компилятору Swift на то, что возвращаемое значение функции можно смело игнорировать, устраняя предупреждение, которое обычно возникает при отказе от использования значения, возвращаемого функцией.

Вот основной синтаксис использования @discardableResult:

@discardableResult
func someFunction() -> Int {
    // Function implementation
    return 42
}

В этом примере мы пометили функцию someFunction() как @discardableResult, что дает понять Swift, что можно вызвать эту функцию и не использовать ее возвращаемое значение.

Когда использовать @discardableResult

Атрибут @discardableResult особенно полезен в следующих сценариях:

1. Ведение логов и отладка

Представьте, что у вас есть функция логирования, которая регистрирует события в вашем приложении. Возможно, вам не всегда нужно что-либо делать с результатом работы функции регистрации, поскольку основная цель заключается в регистрации информации для целей отладки или мониторинга.

@discardableResult
func logEvent(message: String) -> Bool {
    // Log the event
    print(message)
    
    // Return true if the event was logged successfully
    return true
}

В этом случае пометка возвращаемого значения как отбрасываемого позволяет регистрировать события, не загромождая код лишними переменными.

2. Гибкие интерфейсы

При построении текучих интерфейсов можно иметь методы, которые связываются в цепочку, но не требуют фиксации промежуточных результатов. Атрибут @discardableResult дает понять, что эти методы можно использовать без присвоения их результатов переменным.

@discardableResult
func addToCart(item: String) -> ShoppingCart {
    // Add the item to the shopping cart
    self.items.append(item)
    
    // Return the updated shopping cart
    return self
}

С помощью @discardableResult можно выстроить цепочку вызовов методов следующим образом:

let cart = ShoppingCart()
    .addToCart(item: "Product 1")
    .addToCart(item: "Product 2")

 3. Уведомления и колбеки

Функции, запускающие уведомления, обратные вызовы или методы делегатов, часто возвращают значения, указывающие на успех или неудачу. Однако в некоторых случаях нет необходимости сразу проверять возвращаемое значение. Пометка таких возвращаемых значений как отбрасываемых позволяет повысить ясность кода.

@discardableResult
func sendNotification(message: String) -> Bool {
    // Send a notification
    NotificationCenter.default.post(name: .notificationName, object: nil, userInfo: ["message": message])
    
    // Return true if the notification was sent successfully
    return true
}

Используя @discardableResult, можно отправлять уведомления без необходимости явного перехвата возвращаемого значения.

Заключение

Атрибут @discardableResult в Swift является ценным инструментом для улучшения читаемости кода и управления функциями, возвращающими значения, которые не всегда нужно использовать. Он позволяет исключить предупреждения компилятора при намеренном игнорировании возвращаемого значения, делая код чище и выразительнее. Разумное использование @discardableResult в коде позволяет найти баланс между безопасностью типов и практичностью, обеспечивая ясность и эффективность кода.

Если вы нашли опечатку - выделите ее и нажмите Ctrl + Enter! Для связи с нами вы можете использовать info@apptractor.ru.
Advertisement

Наши партнеры:

LEGALBET

Мобильные приложения для ставок на спорт
Telegram

Популярное

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: