Как мне объявить, что вычисляемое свойство "бросает" в Swift?
class SomeClass {
var someProperty: Int {
throw Err("SNAFU")
}
}
Для кода, подобного приведенному выше, ошибка с быстрым двоичным жалобой не обрабатывается, потому что закрывающая функция не объявлена "бросает".
Как объявить, что 'someProperty' 'выбрасывает' в вышеуказанном?
class SomeClass {
var someProperty throws: Int {
}
}
и
class SomeClass {
var someProperty: throws Int {
}
}
и
class SomeClass {
var someProperty: Int throws {
}
}
похоже, не работают.
Ответы
Ответ 1
Обновление для Swift 5: это все еще невозможно.
По состоянию на Swift 3:
Вы не можете бросить из вычисленного свойства. Вы должны использовать функцию, если вы хотите бросить. Раздел объявлений в разделе "Справочник по языку" в конце языка программирования Swift перечисляет только throws
(и rethrows
) в качестве ключевого слова для объявлений функций и инициализаторов.
Ответ 2
Пока невозможно (пока) до throw
из вычисленных свойств в Swift, я нашел Крис Лэттнер сам, тот самый вопрос о одном из форумов форума разработчиков Apple:
Мы согласны с тем, что вы должны иметь возможность отмечать геттеры и сеттеры как "броски" в индексах и вычисленных свойствах, но пока не получили их. Мы, скорее всего, будем поддерживать это в течение некоторого времени, но неясно, удастся ли это сделать для Swift 2.