有没有办法防止在Swift中插入String?

时间:2015-10-19 22:25:21

标签: string swift logging string-interpolation

我正在试验一个看起来像这样的简单记录器的想法:

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没有用字符串插值构建?

1 个答案:

答案 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)'
相关问题