我希望能够使用元数据来注释我的类型和方法,并在运行时读取它们.
语言参考解释了如何声明属性用法,但实际上是否可以声明自己的属性?
阅读需要某种反射机制,我根本无法在参考文献中找到,因此问题的第二部分可能是 - 是否有可能反思.如果Swift中没有这些功能,可以使用Objective-C代码(但在Swift实例和类型上)吗?
一个相对不相关的注释:已经建模为属性的决定以及添加到核心语法中的内容让我觉得非常武断.感觉两个不同的团队在语法和某些属性上工作.例如,他们把weak和unowned到语言作为修饰,但做@final和@lazy属性.我相信,一旦他们实际添加了访问修饰符,他们可能会喜欢属性final.所有这些都与Objective-C互操作性有关吗?
你现在可以做这样的事情!查看“属性包装器” - https://docs.swift.org/swift-book/LanguageGuide/Properties.html
这是该页面的一个示例:
@propertyWrapper
struct TwelveOrLess {
private var number = 0
var wrappedValue: Int {
get { return number }
set { number = min(newValue, 12) }
}
}
struct SmallRectangle {
@TwelveOrLess var height: Int
@TwelveOrLess var width: Int
}
var rectangle = SmallRectangle()
print(rectangle.height)
// Prints "0"
rectangle.height = 10
print(rectangle.height)
// Prints "10"
rectangle.height = 24
print(rectangle.height)
// Prints "12"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7247 次 |
| 最近记录: |