Logに基づいて自分のプロジェクトで使用するログクラスを書き込んでいます。 Log
でジェネリッククラスのenum値を使用するにはどうすればいいですか
は、ログメソッドは、すべてが正常に動作しますが、私は、コードがあまりにも繰り返しであることがわかりましたし、ジェネリックT
タイプを使用して、単一の方法でそれを置き換えるしたいと思いますので、
open func trace(_ items: Any..., separator: String = " ", terminator: String = "\n", file: String = #file, line: Int = #line, column: Int = #column, function: String = #function) {
log(.trace, items, separator, terminator, file, line, column, function)
}
open func debug(_ items: Any..., separator: String = " ", terminator: String = "\n", file: String = #file, line: Int = #line, column: Int = #column, function: String = #function) {
log(.debug, items, separator, terminator, file, line, column, function)
}
open func info(_ items: Any..., separator: String = " ", terminator: String = "\n", file: String = #file, line: Int = #line, column: Int = #column, function: String = #function) {
log(.info, items, separator, terminator, file, line, column, function)
}
open func warning(_ items: Any..., separator: String = " ", terminator: String = "\n", file: String = #file, line: Int = #line, column: Int = #column, function: String = #function) {
log(.warning, items, separator, terminator, file, line, column, function)
}
open func error(_ items: Any..., separator: String = " ", terminator: String = "\n", file: String = #file, line: Int = #line, column: Int = #column, function: String = #function) {
log(.error, items, separator, terminator, file, line, column, function)
}
これらのように呼ばれています
open func log<T: Level>(_ items: Any..., separator: String = " ", terminator: String = "\n", file: String = #file, line: Int = #line, column: Int = #column, function: String = #function) {
log(T, items, separator, terminator, file, line, column, function)
}
私が作ってみた方法は
class public func log<T: LogLevelGeneric>(_ items: Any..., separator: String = "", _ file: String = #file, _ line: Int = #line, _ function: String = #function, t:T) {
// Error: Inheritance from non-protocol, non-class type LogLevelGeneric
}
public enum LogLevelGeneric: String {
case pretty = "Prettify"
case measure = "Measure "
case verbose = "Verbose "
case info = "Info "
case warning = "Warning "
case debug = "Debug "
case error = "❤️️Error "
}
です
私は何をしようとすることができます達成することができ、それはできませんが、今まで私はそれができないことを証明したことがわかった。
誰かがこれをどのように正しい方向に向けることができますか?ありがとう。
のためのパラメータとしてのレベルを渡す、汎用的な機能を必要としません。 – ryantxr