Swift:漂亮的 print() Pt.2

Swift:漂亮的 print() Pt.2,第1张

概述作者:Andyy Hope,原文链接,原文日期:2016-04-14 译者:SketchK;校对:Crystal Sun;定稿:CMB 时尚日志,由你做主 在之前的文章中,我们讨论了在输出日志中使用 emojis 的好处,它可以帮助我们更好的去消化和吸收大量的信息,不过我提供的实现方式并不怎么样,没有足够多的例子供你将其应用在自己的代码中。 我将遵守之前的约定继续讨论这个话题,向你展示如何使用 e

作者:Andyy Hope,@L_502_0@,原文日期:2016-04-14
译者:SketchK;校对:Crystal Sun;定稿:CMB

时尚日志,由你做主

在之前的文章中,我们讨论了在输出日志中使用 emojis 的好处,它可以帮助我们更好的去消化和吸收大量的信息,不过我提供的实现方式并不怎么样,没有足够多的例子供你将其应用在自己的代码中。

我将遵守之前的约定继续讨论这个话题,向你展示如何使用 emojis 来实现输出日志的功能,只需在 print 函数上再多花费一点儿工夫。

节省成本

在接下来的文章中,我会打破 Swift 的命名规范,这样做我可不缺理由。为了降低新方案的成本,要在尽可能减少键盘敲击次数的情况下达到同样的目标,比如字母大小写和标题大小写的问题。不管怎么样,如果看到文章的最后,你还在为一些细节而纠结的话,你绝对应该把它们改成你想要的样子。

介绍 log
enum log { }

这里使用枚举类型代替类或结构的原因很多。原因之一是,我们永远不需要实例化一个日志。选择枚举而不是函数,是想确保实现一个安全的日志输出方案。不用着急,一会你就会明白我所说的“安全”的含义了.

枚举成员与值关联
enum log {    case ln(_ line: String)    case url(_ url: String)    case obj(_ any: AnyObject)}

可能有些人还不知道 ln(line) 曾经在 swift 语言中出现过。 print() 在 Swift 2.0 之后替代了 println(),且主要用于日志输出。我在这里举了一些例子来解释 log 枚举的可扩展性。

要先为每一个枚举值设置关联值,毕竟得现有东西才能输出日志吧?请注意,这里忽略了参数标签,因为已经使用参数名称来描述函数的参数了。

看一下目前的情况吧:

print(log.ln(“Hello World”))// ln("Hello World")print("Hello World")// "Hello World"

嗯,看样子似乎是完成了。但这看起来并不是一个可以替代 print 的方案。主要原因有这些:

还是要敲击很多次键盘

除了原始信息外还有许多不必要的内容

外表不怎么样

没有一个 emojis

千言万语,就一句:“这方案太糟糕了”

现在需要完善上面的五个问题,以便实现之前定下的目标.

自定义运算符
postfix operator / { }

先假定你们大多数人在这之前都没有遇到过自定义运算符的需求。没关系,我也是最近才用上这个功能,不过用的也不是太多.

要创建一个 postfix 后置运算符,展示的内容会出现在运算符的左侧,想让它出现在日志代码的后面,只用敲击一次键盘就能实现。

选择 / 符号是因为它最接近注释符号但不会真正产生注释,另外它也是少数几个不用 shift 键来就可以直接打出来字符。

...感觉自己就像是政客,在不停的想办法减少实现预算。

实现
postfix func / (target: log) {     switch target {    case ln(let line):        log("✏️",line)    case url(let url):        log("          总结       

以上是内存溢出为你收集整理的Swift:漂亮的 print() Pt.2全部内容,希望文章能够帮你解决Swift:漂亮的 print() Pt.2所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1090253.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存