自定义字符串插值与 DSL 构建
扩展 StringInterpolationProtocol 创建领域特定语言,实现类型安全模板引擎。 · 难度:入门 · +10XP
自定义字符串插值与 DSL 构建
Swift 的字符串插值是可扩展的。通过实现 ExpressibleByStringInterpolation 协议,你可以插入自定义类型、自动转义 HTML、或者构建迷你查询语言。本教程将指导你创建一个安全的 SQL 查询构建器,自动处理参数绑定,防止注入。
struct SQL: ExpressibleByStringInterpolation {
var query: String = ""
var args: [String] = []
init(stringInterpolation: SQLStringInterpolation) {
query = stringInterpolation.query
args = stringInterpolation.args
}
}
struct SQLStringInterpolation: StringInterpolationProtocol {
var query = ""
var args: [String] = []
mutating func appendLiteral(_ literal: String) { query += literal }
mutating func appendInterpolation(_ value: String) {
query += "?"
args.append(value)
}
}