博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Emoji 上的 Swift:换一种视角来理解 Swift 高阶函数
阅读量:6897 次
发布时间:2019-06-27

本文共 1097 字,大约阅读时间需要 3 分钟。

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

译者:;校对:;定稿:

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

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

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

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

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

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

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

以及重复操作:

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

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

然后还有 mapflatMap 的对比:

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

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

不知道您是否有喜爱的 Swift 功能,想用 Emoji 将其表示出来吗?我已经向大家展示了我的想法。现在,是时候展示您的想法了。

更新:Phil Aaronson 建议还可以。

 functions too! 

— Phil Aaronson (@phildrone) 

理想情况下,这些示例应当都可以在 Swift Playground 当中编译运行,我同样赞同使用其他 Emoji 来阐述这些功能,即使实现起来相当棘手。

本文由 SwiftGG 翻译组翻译,已经获得作者翻译授权,最新文章请访问 。

转载地址:http://wccdl.baihongyu.com/

你可能感兴趣的文章
使用ss命令代替 netstat
查看>>
Maven的作用及简介
查看>>
08-hibernate注解-多对多单向外键关联
查看>>
Tomcat下使用Druid配置JNDI数据源
查看>>
神经网络中embedding层作用——本质就是word2vec,数据降维,同时可以很方便计算同义词(各个word之间的距离),底层实现是2-gram(词频)+神经网络...
查看>>
SQL Server 临时表的删除
查看>>
ElasticSearch安装部署,基本配置(Ubuntu14.04)
查看>>
nginx优化缓冲缓存
查看>>
最新的Zynq资料整理
查看>>
AS 功能 设置 SDK AVD 简介 MD
查看>>
MySql之存储过程的使用
查看>>
17秋 SDN课程 第四次上机作业
查看>>
gradle windows上面安装配置
查看>>
基于 HTML5 WebGL 的 3D SCADA 主站系统
查看>>
CentOS上安装分布式文件系统FastDFS & 配置和问题解决
查看>>
Netty 包头
查看>>
Unity3D Asset文件导出3DMax 可编辑格式
查看>>
Java DES 加解密("DES/ECB/PKCS1Padding")
查看>>
图像滤镜艺术---Swirl滤镜
查看>>
hdu 2842(矩阵高速幂+递推)
查看>>