我正在试验一个看起来像这样的简单记录器的想法:
log(constant: String, _ variable: [String: AnyObject]? = nil)
将使用这样的:
log("Something happened", ["error": error])
但是我想防止滥用常量/变量模式,如下所示:
log("Something happened: \(error)") // `error` should be passed in the `variable` argument
有没有办法确保constant
没有用字符串插值构建?
答案 0 :(得分:1)
您可以使用StaticString
代替String
:
func log(constant: StaticString, _ variable: [String: AnyObject]? = nil) {
// You can retrieve `String` from `StaticString`
let msg = constant.stringValue
}
let foo = 1
log("test \(foo)") // -> error: cannot invoke 'log' with an argument list of type '(String)'