gpt4 book ai didi

swift - 如何在@dynamicMemberLookup 中快速声明 "throws"为 `subscript(dynamicMember:)`?

转载 作者:行者123 更新时间:2023-11-28 14:03:08 32 4
gpt4 key购买 nike

在 swift 中使用@dynamicMemberLookup 时,subscript 不能声明一个“throws”。

subscript(dynamicMember member: String) -> Any

没关系。

subscript(dynamicMember member: String) throws -> Any

这会产生编译错误。

最佳答案

目前语言不支持在 subscript 中使用 throws。但是你可以使用一些技巧来避免这种情况,同时保留 throws 的特性:

public subscript(dynamicMember member: String) -> () throws -> Any {
return { try REAL_FUNCTION_THAT_THROWS() }
}

只需声明订阅返回一个 block ,然后在函数后面添加一个() 来执行真正的函数。所以你可以这样编码:

@dynamicMemberLookup
class A {
public subscript(dynamicMember member: String) -> () throws -> Any {
return { try REAL_FUNCTION_THAT_THROWS() }
}
}

let a = A()
let value = try? a.doWhatYouWant()
let value2 = try? a.anotherMethod()

关于swift - 如何在@dynamicMemberLookup 中快速声明 "throws"为 `subscript(dynamicMember:)`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53325301/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com