【发布时间】:2017-07-29 21:41:31
【问题描述】:
我有以下代码,我在其中定义了一个 Loggable 协议,并且我希望我的应用程序中的任何 Array 类型符合 Loggable 都可以轻松转换为字符串。
//: Playground - noun: a place where people can play
import UIKit
protocol Loggable {
var logDescription: String { get }
}
struct Node: CustomStringConvertible {
let id: Int
var description: String {
return "node: \(self.id) \n"
}
}
let node1 = Node(id: 1)
let node2 = Node(id: 2)
let nodes = [node1, node2]
print(nodes)
extension Array: Loggable where Element: Loggable {
var logDescription: String {
var message = ""
for element in self {
message += element.logDescription
}
return message
}
}
struct Logger {
static func log(item: Loggable) {
print(item.logDescription)
}
}
Logger.log(item: nodes)
不幸的是,我收到了Extension of type 'Array' with constraints cannot have an inheritance clause。有没有办法完成我想做的事情?
更广泛地说,如果有任何关于使用 Swift 功能来实现更清晰的日志消息的建议或链接,我将不胜感激。
【问题讨论】:
标签: arrays swift logging protocols