提问人:Christian B 提问时间:10/4/2023 最后编辑:Dávid PásztorChristian B 更新时间:10/4/2023 访问量:176
Swift 宏用于 URL 而不是运行时验证的优势?
Advantage of Swift macro for URL instead of runtime validation?
问:
在这里和这里阅读 Swift 5.9 中的新 Swift 宏,似乎在编译时创建一个宏来评估 URL 有效性是一个常见的例子。
在编译时而不是运行时检查 URL 有效性有什么好处?考虑到,根据设计,使用 Swift 语言,我们习惯于在运行时检查它。我认为这是因为 URL 是动态的,可以随时从有效变为无效,反之亦然。
实例化 URL 将起作用,我认为它可以在编译时检查,但是如果一个不太常见的 URL 稍后在运行时变得无效怎么办?URL("https://www.google.com")!
谢谢!
答:
3赞
Dávid Pásztor
10/4/2023
#1
您似乎误解了 URL 验证在 Swift 中的作用。
初始值设定项检查提供的字符串结构是否有效 - 这意味着它不包含任何无效字符(例如需要在 URL 中转义的空格等)。URL(string:)
URL
初始值设定项不会检查是否实际指向现有地址。如果不向该地址发出网络请求,甚至是不可能的,即使如此,请求是否成功也不是地址是否有效的明确信号 - 您可能在客户端或服务器端遇到连接问题。URL
URL
因此,对硬编码 URL 的编译时检查是完全安全的,因为一旦实例化了 ,就无法更改其底层地址。URL
链接文章中建议的宏只是检查初始值设定项是否使用指定的 URL 字符串成功 - 它们也不会进行任何额外的验证。URL(string:)
评论