@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))编译错误?
请告诉我你认识谁。
发布于 2020-01-02 16:48:47
dynamicallyCall是一个函数,但dynamicMemberLookup是一个下标,它有变体。这是故意的
( a)允许密钥路径访问(对您的示例而言)
print(dm[dynamicMember: "dynamicProperty"])( b)但不允许模棱两可,比如
dm["dynamicProperty"]见官方详细信息论斯威夫特进化
https://stackoverflow.com/questions/59558946
复制相似问题