swift - 被包装对象的访问名称,在 Swift 属性包装器实现中
问题描述
我正在使用 Swift 属性包装器来定义如下内容:
@MyWrapper var foo: Int
在属性包装器的实现中,我想以字符串的形式访问变量 foo 的名称。像这样的东西:
@propertyWrapper
public struct MyWrapper<Type> {
init() {
// Get access to "foo" -- name of var as String
}
}
建议?
解决方案
将变量名传递给包装器;您可以使用这种替代方式。
@propertyWrapper
public struct MyWrapper<Type> {
var wrappedValue: ... {
set{.....}
get{.....}
}
init(wrappedValue initialValue: Double, _ nameOfTheVariable: String ) {
precondition(!nameOfTheVariable.isEmpty)
//you can access nameOfTheVariable here
}
}
然后像下面这样使用它,
@MyWrapper("foo") var foo: Int
注意:在 init 方法中提到 WrappedValue 是必须的。除非,它对我不起作用。
( init( wrappedValue initialValue: Double, _ nameOfTheVariable: String) )
推荐阅读
- javascript - 地理服务器和 OpenLayers
- python - 如何在绘图破折号中更改图像大小
- amazon-web-services - 如何将 AWS Lambda 配置更新到特定层的最新版本?
- python - 使用 shape=(dim,L,2) 访问 ndarray 的元素
- bash - 如何通过 API 对 Bitbucket Pull Request 进行 Markdown/HTML 评论?
- javascript - 一段时间后,Google Place 服务图像返回 403 禁止
- python - 生成具有随机开始和结束日期且从不重叠的多个对象?
- shell - 从shell中的文件的每一行中删除字符
- next.js - 导出静态 NextJS App `TypeError: Cannot read property '/404' of undefined`
- php - 验证 - 如果文件上传有文件,则需要文件名