Мобильный кот
2.72K subscribers
88 photos
3 videos
2 files
87 links
Все, что считаю важным про жизнь мобильного разработчика

Шкаф с материалами
https://t.me/cat_with_mobile_cabinet
Download Telegram
♥️ Практики, используемые в ядре Swift

Я люблю копать исходный код Swift. Конечно же, как нормальный программист, почти ничего там не понимаю, но от этого интерес только возрастает😂.

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

Каждый раз я изобретаю велосипед и:
- то добавляю запятую перед каждым элементов, и в конце удаляю первый символ;
- то наоборот добавляю ее в конце, и потом удаляю последний символ;
- то контролирую номер элемента и добалвяю только там, где это требуется.

Задача тривиальная и никак не уровня "серьезного" разработчика. Но каждый раз я все делаю новым способом. Причем решение данного вопроса изменяется еще и в зависимости от языка, на котором я пишу код.

Сегодня в процессе изучения исходного кода типа Array и работы над разделом по массивам в моем справочнике по Swift на GitHub я наткнулся на довольно изящную реализацию данного вопроса, используемую при вызове свойства description у коллекций:

var result = ""
// ...
var first = true
for item in self {
if first {
first = false
} else {
result += ", "
}
debugPrint(item, terminator: "", to: &result)
}
// ...


Запятая добавляется перед каждым элементом, начиная со второго.

P.S. И что самое интересное, в данном куске кода используется inout - аргумент. Так что не такая уж это и плохая практика, видимо.

А как вы решаете такой тривиальный вопрос в своем коде?

#пишемхорошийкод #swiftcore