185 похожих чатов

Ребят, есть вопрос, касающийся основ Swift, а именно геттеров и

сеттеров.
Допустим есть структура A, пустая, вот так:

struct A {
}

Доступа у меня к ней нет, а я хочу добавить в неё переменную через расширение, вот так:

extension A {

var a: Int {
get {
return 1
}

set {
self.a = newValue // WARNING: function call causes an infinite recursion
}
}

}

IDE меня уже предупреждает о бесконечной рекурсии, которая и происходит, если я попытаюсь изменить "a". Вот так:

var aaa = A()
aaa.a = 2

Как это поправить?

11 ответов

26 просмотров

https://stackoverflow.com/questions/25426780/how-to-have-stored-properties-in-swift-the-same-way-i-had-on-objective-c смотрел сюда? производительность чуток уйдет, но ты получишь что хотел

Артем Рылов
https://stackoverflow.com/questions/25426780/how-t...

Не получит. Это всё основано на ObjC-рантайм. Это ObjC-хаки, переписанные на свифте. Соответственно, это работает там, где есть ObjC-рантайм — т.е. на платформах Apple. В чистом свифте так не выйдет. И это сделано специально создателями свифта.

Alex Sherbakov
Не получит. Это всё основано на ObjC-рантайм. Это ...

Начиная с Свифта 4, там от ОБЖ-с ничего. Просто две переменных

Dmytro
Начиная с Свифта 4, там от ОБЖ-с ничего. Просто дв...

Кажется, там лишь создаётся иллюзия, а по факту все будут юзать одну переменную

Alex Sherbakov
Как называется наш чат? :)

Не смотря на это, сюда заплетают из разных областей, так как тут собраны шарящие люди именно по свифту

Dmytro
Начиная с Свифта 4, там от ОБЖ-с ничего. Просто дв...

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

Да можно, только это не бест практис

Nemo- Автор вопроса

Похожие вопросы

Обсуждают сегодня

Ну вот просто даже давайте вот как. Какой нибудь конкретный кейс, можете в пример привести, где бч работает и приносит прикладную пользу, а не просто что бы было? Не крипту.
Alexander Andreev
22
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
> Копаем глубже > Следующий момент был, когда я спросил его, знает ли он JavaScript. Он ответил, что его учили работать с C#. Я тоже в университете писал на C#, но даже там мн...
Oleg Volkov
4
лучше скажите, причём тут паскаль?
Alexey Kulakov
36
И никого не интересует какие пакеты кто использует. ((% Заходишь на сайт симфони и видишь поддержку Украины - по законам РФ это ж экстремизм. Только никто не отказывается от с...
Am Ambrion
11
Чтобы перехватить все нажимания буков на форме, надо хук ставить? Пробовал на форме ОнКейДаун, оно ловит клаву если фокус не на компоненте с вводом текста
Serjone
15
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
7
Народ! Впервые клиенту пришло письмо от РКН, у вас, дескать, есть яндекс метрика, а нигде не написано, что вы ее юзаете. Никто не сталкивался?
Sasha Beep
14
Всем привет! вывожу на общей стр дочерние ресурсыв каждом ресурсе галерея, и первая фотка должна выводиться на общей [!DocLister? &prepare=photo !]
Alekso
12
Добрый вечер. Хочу чтобы у меня в классе поле было функцией, которая возвращает строку. Делаю так: interface ... TGetOutPath = function : String of object; ... protec...
Kirill Filippenok
12
Карта сайта