swift - 如何编写一个扩展来支持 [String] 和 [Substring]?

标签 swift swift4 swift-extensions

通常,要针对 [String] 编写扩展,您可以这样做...

extension Array where Element == String {
    ....
}

但是,有时我没有 [String],而是 [Substring]。如何编写支持其中任何一个的扩展?

最佳答案

StringSubstring都符合StringProtocol协议(protocol), 所以你可以定义

extension Array where Element: StringProtocol {
    // ...
}

标准库中的许多函数已被泛化 接受 StringProtocol 参数,例如 Int 初始化器

convenience init?<S>(_ text: S, radix: Int = default) where S : StringProtocol

这样您就可以使用StringSubstring来调用它:

let n = Int("1234")
let m = Int("1234".dropFirst())

关于swift - 如何编写一个扩展来支持 [String] 和 [Substring]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49206181/

相关文章:

ios - 将 String 转换为 NSDate 但仍然无法访问 dateByAddingTimeInterval 方法

ios - Swift 中的存在运算符是什么?

ios - 弱委托(delegate)和类协议(protocol)

swift - 扩展 NSDecimalNumber 以符合 ExpressibleByStringLiteral 会导致 LLDB RPC 服务器崩溃

ios - Swift 'open' 关键字和扩展中的可覆盖方法/属性?

ios - Swift - 带有图像的自定义 MKPointAnnotation

ios - 将响应转换为字典时,已解析响应的顺序已更改

swift - 使用 Swift 在 Firebase 中通过给定的电子邮件获取用户的 uid

swift4 - 同时访问<地址>,但修改需要独占访问

ios - 可选只读变量的 Swift 协议(protocol)默认实现