Swift:漂亮的 print() Pt.2
时尚日志,由你做主 在之前的文章中,我们讨论了在输出日志中使用 emojis 的好处,它可以帮助我们更好的去消化和吸收大量的信息,不过我提供的实现方式并不怎么样,没有足够多的例子供你将其应用在自己的代码中。 我将遵守之前的约定继续讨论这个话题,向你展示如何使用 emojis 来实现输出日志的功能,只需在 节省成本在接下来的文章中,我会打破 Swift 的命名规范,这样做我可不缺理由。为了降低新方案的成本,要在尽可能减少键盘敲击次数的情况下达到同样的目标,比如字母大小写和标题大小写的问题。不管怎么样,如果看到文章的最后,你还在为一些细节而纠结的话,你绝对应该把它们改成你想要的样子。 介绍 logenum log { } 这里使用枚举类型代替类或结构的原因很多。原因之一是,我们永远不需要实例化一个日志。选择枚举而不是函数,是想确保实现一个安全的日志输出方案。不用着急,一会你就会明白我所说的“安全”的含义了. 枚举成员与值关联enum log { case ln(_ line: String) case url(_ url: String) case obj(_ any: AnyObject) } 可能有些人还不知道 要先为每一个枚举值设置关联值,毕竟得现有东西才能输出日志吧?请注意,这里忽略了参数标签,因为已经使用参数名称来描述函数的参数了。 看一下目前的情况吧: print(log.ln(“Hello World”)) // ln("Hello World") print("Hello World") // "Hello World" 嗯,看样子似乎是完成了。但这看起来并不是一个可以替代
现在需要完善上面的五个问题,以便实现之前定下的目标. 自定义运算符postfix operator / { } 先假定你们大多数人在这之前都没有遇到过自定义运算符的需求。没关系,我也是最近才用上这个功能,不过用的也不是太多. 要创建一个 选择 ...感觉自己就像是政客,在不停的想办法减少实现预算。 实现postfix func / (target: log) { switch target { case ln(let line): log("??",line) case url(let url): log(" |