作者:Erica Sadun,原文链接,原文日期:2016-11-08
译者:星夜暮晨;校对:Crystal Sun;定稿:CMB
不久之前,Iain Delaney 给我发了这一幅图:
这幅由 Steve Luscher 设计的图,其内容来源于 Joey Devilla 的博客 Global Nerdy 中的一篇文章。我觉得这种做法相当有才,让人眼前一亮。
然而,这幅图不是用 Swift 编写的,显然没办法在 Swift 中运行。我决定娱乐一番:我建立了一个 Playground,将大量的 Emoji 字符分配到对应的 Emoji 变量当中,由此构建了一个庞大的列表,然后使用 Swift 的语法让这些例子能够正确运行。
我决定听从 Jaden Geller 在 Twitter 上的所提出的建议,我没有使用便便?来表示 reduce
操作,因为这原先会让人理解为:在每个 reduce
操作执行的时候,都是将便便和一个新的食物合起来一同「吃下」。在 Swift 的版本当中,reduce
将从一个悲伤的表情?开始,最后变得高兴和满足?。
我尝试加了更多的食物种类,看看是否值得扩展一下图片上的内容,但是我发现一旦示例数量超过了原先的 4 种食物,就不够干净和优雅了:
我决定不再使用奶牛?、土豆?、小鸡?和玉米?,我想看一看是否存在一个比 isVegetarian
更好的 filter
选项。比如说孩子们将会选择自己爱吃的食物(往往并不营养):
然后我又想到,那么为什么不再多加一些 Swift 语言的特性呢?于是我决定描述一下可变和不可变项目操作的概念:
以及重复操作:
还有排序操作(虽然我觉得这里可能换用别的食物会更好一些):
当然了,zip
操作同样很赞:
然后还有 map
与 flatMap
的对比:
很遗憾的是,足球并不是一个合法的字符标识符,所以我无法在足球和橄榄球之间执行 bitcast
操作。这种不一致的 Emoji 字符集让我很不开心。Swift 需要对操作符和标识符进行基于标准的改造。
当我在鼓捣 fatalError
的时候,我发现我的时间都耗费在这里了:
不知道您是否有喜爱的 Swift 功能,想用 Emoji 将其表示出来吗?我已经向大家展示了我的想法。现在,是时候展示您的想法了。
更新:Phil Aaronson 建议还可以使用 emoji 函数。
@ericasadun functions too! pic.twitter.com/IDwDBps2WD
— Phil Aaronson (@phildrone) November 8, 2016
理想情况下,这些示例应当都可以在 Swift Playground 当中编译运行,我同样赞同使用其他 Emoji 来阐述这些功能,即使实现起来相当棘手。
本文由 SwiftGG 翻译组翻译,已经获得作者翻译授权,最新文章请访问 http://swift.gg。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。