Строки в Swift


1 0

Новый язык программирования от Apple - Swift меня сегодня сильно удивил. Строки в этом языке по современному не мутируемы. Логично, с точки зрения безопасности. Каждый раз, когда вы в коде пишете:

s = s + “test”

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

Логично, ведь каждый символ в некоторых Unicode может занимать разное количество памяти. некоторые символы будут занимать только 2 байта, а другие все 4. Можно было бы использовать Unicode версию с фиксированной длиной, но видимо Apple решили выбрать UTF8 (или что-то подобное), при хранении данных в памяти, а в остальные форматы конвертировать. Бог им судья за это, а я буду судьей за сканирование. 

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

Apple говорила на презентации, что Swift будет лучше заточен для создания быстрых приложений. Только вот со строками уже косяк. А ведь было бы так легко создать один лишь метод для подсчета символов и лениво подсчитывать его. Не обратился пользователь к методу? Расчета нет. Обратился? Посчитали и сохранили тут же в защищенной переменной. При всех последующих обращением будет возвращаться уже рассчитанное значение. Просто и элегантно, и работать будет хорошо, потому что строки то не мутируемые. 


Понравилось? Кликни Лайк, чтобы я знал, какой контент более интересен читателям. Заметку пока еще никто не лайкал и ты можешь быть первым


Комментарии

Анатолий

31 Августа 2014

immutable !== не мутируемые, https://translate.google.ru/#en/ru/immutable


Добавить Комментарий

Еще что-нибудь

Хотите найти еще что-то интересное почитать? Можно попробовать отфильтровать заметки на блоге по категориям.

О блоге

Программист, автор нескольких книг серии глазами хакера и просто блогер. Интересуюсь безопасностью, хотя хакером себя не считаю

Обратная связь

Без проблем вступаю в неразборчивые разговоры по e-mail. Стараюсь отвечать на письма всех читателей вне зависимости от страны проживания, вероисповедания, на русском или английском языке.

Пишите мне