作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
@dynamicMemberLookup下标函数。
不能使用parameterName 错误。
为什么?
@dynamicCallable 可以。
@dynamicMemberLookup
struct DynamicMember {
// OK.
subscript(dynamicMember string: String) -> String {
return string
}
// NG.
// none parameterName func. Why error?
// @dynamicMemberLookup attribute requires 'Dynamic' to have a 'subscript(dynamicMember:)' method that accepts either 'ExpressibleByStringLiteral' or a keypath
/*
subscript(dynamicMember: String) -> String {
return dynamicMember
}
*/
}
let dm = DynamicMember()
print(dm.dynamicProperty)
@dynamicCallable 无参数名称 OK。
@dynamicCallable
struct DynamicCall {
// OK.
func dynamicallyCall(withArguments list: [Int]) -> [Int] {
return list
}
// OK.
// none parameterName func.
// dynamicCallable is OK.
/*
func dynamicallyCall(withArguments: [Int]) -> [Int] {
return withArguments
}
*/
}
let dc = DynamicCall()
print(dc(1, 2, 3))
编译器错误?
请告诉我你认识谁。
最佳答案
dynamicallyCall
是一个函数,但 dynamicMemberLookup
是一个下标,它有变体。这是故意的
a) 允许关键路径访问(对于您的示例)
print(dm[dynamicMember: "dynamicProperty"])
b) 但不允许模棱两可,比如
dm["dynamicProperty"]
详情见官方on Swift Evolution
关于Swift5 @dynamicMemberLookup 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59558946/
@dynamicMemberLookup下标函数。 不能使用parameterName 错误。 为什么? @dynamicCallable 可以。 @dynamicMemberLookup
Objc.io有一个很好的关于轻松改变无类型字典的演讲,但问题是你不能轻易地坚持他们。我认为该演讲可能在引入 @dynamicMemberLookup 之前发布。 AnyCodable轻松编码/解码/
在 Swift 中,您可以定义 @dynamicMemberLookup ( see documentation ) 以直接访问嵌套在另一种类型中的属性。是否有等效的 Python? 我想用Pytho
在 swift 中使用@dynamicMemberLookup 时,subscript 不能声明一个“throws”。 subscript(dynamicMember member: String)
我是一名优秀的程序员,十分优秀!