转载

Emoji 上的 Swift:换一种视角来理解 Swift 高阶函数

作者:Erica Sadun, 原文链接 ,原文日期:2016-11-08

译者: 星夜暮晨 ;校对: Crystal Sun ;定稿: CMB

不久之前, Iain Delaney 给我发了这一幅图:

Emoji 上的 Swift:换一种视角来理解 Swift 高阶函数

这幅由 Steve Luscher 设计的图,其内容来源于 Joey Devilla 的博客 Global Nerdy 中的 一篇文章 。我觉得这种做法相当有才,让人眼前一亮。

然而,这幅图不是用 Swift 编写的,显然没办法在 Swift 中运行。我决定娱乐一番:我建立了一个 Playground,将大量的 Emoji 字符分配到对应的 Emoji 变量当中,由此构建了一个庞大的列表,然后使用 Swift 的语法让这些例子能够正确运行。

Emoji 上的 Swift:换一种视角来理解 Swift 高阶函数

我决定听从 Jaden Geller 在 Twitter 上的所提出的建议,我没有使用便便:hankey:来表示 reduce 操作,因为这原先会让人理解为:在每个 reduce 操作执行的时候,都是将便便和一个新的食物合起来一同「吃下」。在 Swift 的版本当中, reduce 将从一个悲伤的表情:sleepy:开始,最后变得高兴和满足:yum:。

我尝试加了更多的食物种类,看看是否值得扩展一下图片上的内容,但是我发现一旦示例数量超过了原先的 4 种食物,就不够干净和优雅了:

Emoji 上的 Swift:换一种视角来理解 Swift 高阶函数

我决定不再使用奶牛:cow:、土豆:sweet_potato:、小鸡:chicken:和玉米:corn:,我想看一看是否存在一个比 isVegetarian 更好的 filter 选项。比如说孩子们将会选择自己爱吃的食物(往往并不营养):

Emoji 上的 Swift:换一种视角来理解 Swift 高阶函数

然后我又想到,那么为什么不再多加一些 Swift 语言的特性呢?于是我决定描述一下可变和不可变项目操作的概念:

Emoji 上的 Swift:换一种视角来理解 Swift 高阶函数

以及重复操作:

Emoji 上的 Swift:换一种视角来理解 Swift 高阶函数

还有排序操作(虽然我觉得这里可能换用别的食物会更好一些):

Emoji 上的 Swift:换一种视角来理解 Swift 高阶函数

当然了, zip 操作同样很赞:

Emoji 上的 Swift:换一种视角来理解 Swift 高阶函数

然后还有 mapflatMap 的对比:

Emoji 上的 Swift:换一种视角来理解 Swift 高阶函数

很遗憾的是,足球并不是一个合法的字符标识符,所以我无法在足球和橄榄球之间执行 bitcast 操作。这种不一致的 Emoji 字符集让我很不开心。Swift 需要对操作符和标识符进行基于标准的改造。

Emoji 上的 Swift:换一种视角来理解 Swift 高阶函数

当我在鼓捣 fatalError 的时候,我发现我的时间都耗费在这里了:

Emoji 上的 Swift:换一种视角来理解 Swift 高阶函数

不知道您是否有喜爱的 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://swift.gg/2016/12/09/swift-by-emoji-a-considered-approach/
正文到此结束
Loading...