Подтвердить что ты не робот

Как мне объявить, что вычисляемое свойство "бросает" в 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 {
  }
}

похоже, не работают.

4b9b3361

Ответ 1

Обновление для Swift 5: это все еще невозможно.

По состоянию на Swift 3:

Вы не можете бросить из вычисленного свойства. Вы должны использовать функцию, если вы хотите бросить. Раздел объявлений в разделе "Справочник по языку" в конце языка программирования Swift перечисляет только throwsrethrows) в качестве ключевого слова для объявлений функций и инициализаторов.

Ответ 2

Пока невозможно (пока) до throw из вычисленных свойств в Swift, я нашел Крис Лэттнер сам, тот самый вопрос о одном из форумов форума разработчиков Apple:

Мы согласны с тем, что вы должны иметь возможность отмечать геттеры и сеттеры как "броски" в индексах и вычисленных свойствах, но пока не получили их. Мы, скорее всего, будем поддерживать это в течение некоторого времени, но неясно, удастся ли это сделать для Swift 2.