如何在Swift中声明计算属性'throws'?

问题描述 投票:37回答:2
class SomeClass {
  var someProperty: Int {
    throw Err("SNAFU")
  }
}

对于上面这样的代码,swift二进制抱怨'错误未被处理,因为封闭函数未被声明为'throws'。

如何在上面声明'someProperty''抛出'?

class SomeClass {
  var someProperty throws: Int {
  }
}

class SomeClass {
  var someProperty: throws Int {
  }
}

class SomeClass {
  var someProperty: Int throws {
  }
}

似乎没有工作。

swift exception swift2
2个回答
37
投票

截至Swift 3:

你不能从计算属性中抛出。如果你想扔,你必须使用一个功能。 Declarations section of the Language Reference末尾的The Swift Programming Language部分仅列出throws(和rethrows)作为函数和初始化器声明的关键字。


38
投票

虽然从Swift的计算属性中找不到throw是不可能的,但我发现Chris Lattner自己在one of Apple Developer Forums threads上解决了同样的问题:

我们同意你应该能够在下标和计算属性中将getter和setter标记为“throws”,但还没有到达那里。我们可能会在某个时候支持这一点,但目前尚不清楚它是否能及时赶上Swift 2。

© www.soinside.com 2019 - 2024. All rights reserved.