作者:Erica Sadun耸别,原文鏈接涮因,原文日期:2016-11-08
譯者:星夜暮晨;校對:Crystal Sun坷虑;定稿:CMB
不久之前甲馋,Iain Delaney 給我發(fā)了這一幅圖:
這幅由 Steve Luscher 設(shè)計(jì)的圖,其內(nèi)容來源于 Joey Devilla 的博客 Global Nerdy 中的一篇文章迄损。我覺得這種做法相當(dāng)有才定躏,讓人眼前一亮。
然而芹敌,這幅圖不是用 Swift 編寫的痊远,顯然沒辦法在 Swift 中運(yùn)行。我決定娛樂一番:我建立了一個(gè) Playground氏捞,將大量的 Emoji 字符分配到對應(yīng)的 Emoji 變量當(dāng)中碧聪,由此構(gòu)建了一個(gè)龐大的列表,然后使用 Swift 的語法讓這些例子能夠正確運(yùn)行液茎。
我決定聽從 Jaden Geller 在 Twitter 上的所提出的建議逞姿,我沒有使用便便??來表示 reduce
操作,因?yàn)檫@原先會(huì)讓人理解為:在每個(gè) reduce
操作執(zhí)行的時(shí)候豁护,都是將便便和一個(gè)新的食物合起來一同「吃下」哼凯。在 Swift 的版本當(dāng)中,reduce
將從一個(gè)悲傷的表情??開始楚里,最后變得高興和滿足??断部。
我嘗試加了更多的食物種類,看看是否值得擴(kuò)展一下圖片上的內(nèi)容班缎,但是我發(fā)現(xiàn)一旦示例數(shù)量超過了原先的 4 種食物蝴光,就不夠干凈和優(yōu)雅了:
我決定不再使用奶牛??、土豆??达址、小雞??和玉米??蔑祟,我想看一看是否存在一個(gè)比 isVegetarian
更好的 filter
選項(xiàng)。比如說孩子們將會(huì)選擇自己愛吃的食物(往往并不營養(yǎng)):
然后我又想到沉唠,那么為什么不再多加一些 Swift 語言的特性呢疆虚?于是我決定描述一下可變和不可變項(xiàng)目操作的概念:
以及重復(fù)操作:
還有排序操作(雖然我覺得這里可能換用別的食物會(huì)更好一些):
當(dāng)然了,zip
操作同樣很贊:
然后還有 map
與 flatMap
的對比:
很遺憾的是满葛,足球并不是一個(gè)合法的字符標(biāo)識符径簿,所以我無法在足球和橄欖球之間執(zhí)行 bitcast
操作。這種不一致的 Emoji 字符集讓我很不開心嘀韧。Swift 需要對操作符和標(biāo)識符進(jìn)行基于標(biāo)準(zhǔn)的改造篇亭。
當(dāng)我在鼓搗 fatalError
的時(shí)候,我發(fā)現(xiàn)我的時(shí)間都耗費(fèi)在這里了:
不知道您是否有喜愛的 Swift 功能锄贷,想用 Emoji 將其表示出來嗎译蒂?我已經(jīng)向大家展示了我的想法÷拢現(xiàn)在,是時(shí)候展示您的想法了柔昼。
更新:Phil Aaronson 建議還可以使用 emoji 函數(shù)哑芹。
@ericasadun functions too! pic.twitter.com/IDwDBps2WD
— Phil Aaronson (@phildrone) November 8, 2016
理想情況下,這些示例應(yīng)當(dāng)都可以在 Swift Playground 當(dāng)中編譯運(yùn)行岳锁,我同樣贊同使用其他 Emoji 來闡述這些功能绩衷,即使實(shí)現(xiàn)起來相當(dāng)棘手。
本文由 SwiftGG 翻譯組翻譯激率,已經(jīng)獲得作者翻譯授權(quán)咳燕,最新文章請?jiān)L問 http://swift.gg。