Better self-executing closures
Очень часто мы используем self-executing closure для настройки объектов в Swift. В основном именно во view слое, реже – в других частях код-базы. И хотя такие closure невероятно удобны, их можно улучшить: уменьшить размер, не ухудшив читаемость кода.
Сегодня хотел бы рассказать вам о функции-утилите, которую я повсеместно использую в своих проектах. Функция configure принимает любой объект или значение, используя ключевое слово inout, модифицирует его по ссылке и возвращает.
Звучит достаточно просто? Так и есть. Я добавил еще атрибут discardableResult, чтобы в случае необходимости игнорировать возвращаемое значение, и rethrows, чтобы не использовать try/catch для closure, которые не выбрасывают ошибки.
Функцию можно объявить глобально в проекте или использовать мой SDK: PimineUtilities, где эта функция уже реализована.
Source / PimineSDK
#utilities #closures #intermediate
Очень часто мы используем self-executing closure для настройки объектов в Swift. В основном именно во view слое, реже – в других частях код-базы. И хотя такие closure невероятно удобны, их можно улучшить: уменьшить размер, не ухудшив читаемость кода.
Сегодня хотел бы рассказать вам о функции-утилите, которую я повсеместно использую в своих проектах. Функция configure принимает любой объект или значение, используя ключевое слово inout, модифицирует его по ссылке и возвращает.
Звучит достаточно просто? Так и есть. Я добавил еще атрибут discardableResult, чтобы в случае необходимости игнорировать возвращаемое значение, и rethrows, чтобы не использовать try/catch для closure, которые не выбрасывают ошибки.
Функцию можно объявить глобально в проекте или использовать мой SDK: PimineUtilities, где эта функция уже реализована.
Source / PimineSDK
#utilities #closures #intermediate