摘要:在自己的博客上分享了十則的一行程序,展示了強(qiáng)大的表達(dá)力。你可以把這個(gè)頁(yè)面發(fā)給你的小伙伴也許還有妹紙,讓他們震驚一下下。它允許你將一個(gè)數(shù)組作為一組參數(shù)傳遞。和均接受可變參數(shù),例如返回。
Ricardo Tomasi在自己的博客上分享了十則CoffeeScript的一行程序,展示了CoffeeScript強(qiáng)大的表達(dá)力。你可以把這個(gè)頁(yè)面發(fā)給你的小伙伴(也許還有妹紙),讓他們震驚一下下。
1. 列表中每項(xiàng)乘2i * 2 for i in [1..10]2. 列表求和
[1..1000].reduce (t, s) -> t + s3. 驗(yàn)證字符串中是否包含某個(gè)詞
因?yàn)槲覀冇?b>some方法,所以這根本就是小菜一碟。
wordList = ["coffeescript", "eko", "play framework", "and stuff", "falsy"] tweet = "This is an example tweet talking about javascript and stuff." wordList.some (word) -> ~tweet.indexOf word
~不是CoffeeScript特有的運(yùn)算符,只是一個(gè)小聰明。~是位求反操作符,~x的效果等于-x-1。這里,indexOf會(huì)返回位置,如果找不到,則返回-1。-(-1)-1為0,0為false。
4. 讀取文件fs.readFile "data.txt", (err, data) -> fileText = data
同步版本:
fileText = fs.readFileSync("data.txt").toString()
在node.js領(lǐng)域,只有在應(yīng)用啟動(dòng)的時(shí)候同步讀取文件是可以接受的。其他時(shí)候應(yīng)該使用異步版本。
5. 生日快樂(lè)是不是感覺(jué)很像偽代碼?
console.log "Happy Birthday #{if i is 3 then "dear Robert" else "to You"}" for i in [1..4]6. 過(guò)濾列表中的數(shù)字
將列表中的成績(jī)分成passed(通過(guò))和failed(掛科)兩類(lèi)。
(if score > 60 then (passed or passed = []) else (failed or failed = [])).push score for score in [49, 58, 76, 82, 88, 90]
使用reduce的版本。
[passed, failed] = [49, 58, 76, 82, 88, 90].reduce ((p,c,i) -> p[+(c < 60)].push c; p), [[],[]]7. 獲取和分析JSON
使用request庫(kù):
request.get { uri:"path/to/api.json", json: true }, (err, r, body) -> results = body8. 尋找列表的最大值或最小值
這種情況下apply函數(shù)很有用。它允許你將一個(gè)數(shù)組作為一組參數(shù)傳遞。Math.max和Math.min均接受可變參數(shù),例如Math.max 30, 10, 20返回30。使用apply可以讓它們配合數(shù)組使用:
Math.max.apply @, [14, 35, -7, 46, 98] # 98 Math.min.apply @, [14, 35, -7, 46, 98] # -79. 埃拉托斯特尼篩法
埃拉托斯特尼篩法,簡(jiǎn)稱(chēng)埃氏篩或愛(ài)氏篩,是一種由埃及數(shù)學(xué)家埃拉托斯特尼所提出的一種簡(jiǎn)單檢定素?cái)?shù)的算法。
(n) -> (p.push i for i in [2..n] when !(p or p=[]).some((j) -> i%j is 0)) and n in p10. fizzbuzz
fizzbuzz問(wèn)題:輸出0到100的數(shù)字,但是3的倍數(shù)輸出Fizz,5的倍數(shù)輸出Buzz,同時(shí)是3和5的倍數(shù)的輸出FizzBuzz。
這個(gè)問(wèn)題在CoffeeScrit下只需一行,而且可讀性非常好:
"#{if i%3 is 0 then "fizz" else ""}#{if i%5 is 0 then "buzz" else ""}" or i for i in [1..100]
還可以更短:
["fizz" unless i%3] + ["buzz" unless i%5] or i for i in [1..100]
竅門(mén)在于當(dāng)對(duì)數(shù)組使用+運(yùn)算符時(shí)它會(huì)被轉(zhuǎn)換為字符串,如果字符串的值為undefined或null,則給出一個(gè)空字符串。
結(jié)論現(xiàn)代語(yǔ)言的表現(xiàn)力真令人吃驚。
原文 10 CoffeeScript One Liners to Impress Your Friends
編譯 SegmentFault
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/77989.html
摘要:看清楚了,不要眨眼睛,一定要收藏,方便大家以后裝逼以及和別的語(yǔ)言撕逼解釋如果為空直接返回,如果比第一個(gè)數(shù)小的數(shù)組放到左邊并遞歸,第一個(gè)數(shù)放到中間,比第一個(gè)數(shù)大的數(shù)組放到右邊并遞歸測(cè)試非常完美結(jié)論就是這么牛逼,有更短的快速 看清楚了,不要眨眼睛,一定要收藏,方便大家以后裝逼以及和別的語(yǔ)言撕逼 qsort=(l)->if l.length== 0 then l else qsort(l[...
摘要:不要使用類(lèi)函數(shù)終于,你不用再看到建議不要使用函數(shù)的提示了。因?yàn)閺暮诵纳贤耆瞥怂鼈儯@意味著請(qǐng)你移步至更好的類(lèi)函數(shù),或者更靈活的層。將從數(shù)據(jù)庫(kù)獲取一個(gè)元數(shù)據(jù),如果您正在循環(huán)訪問(wèn)特定文章的元數(shù)據(jù),則可以在循環(huán)中使用它。 showImg(https://segmentfault.com/img/bV75FM?w=1024&h=534); 1. 不要使用 mysql_ 類(lèi)函數(shù) 終于,你不用...
摘要:那在屆有哪些被封神的庫(kù)呢,今天就給大家介紹十個(gè)堪稱(chēng)殺手級(jí)別的工具包。總之,是一款非常強(qiáng)大且易用的網(wǎng)絡(luò)請(qǐng)求庫(kù)。地址最好用的框架。圖像處理,該庫(kù)是你的不二之選。 Pyt...
摘要:那在屆有哪些被封神的庫(kù)呢,今天就給大家介紹十個(gè)堪稱(chēng)殺手級(jí)別的工具包。該庫(kù)是在之上完善的,自此請(qǐng)求就變得異常的簡(jiǎn)單,一行代碼即可搞定。這是最流行的網(wǎng)絡(luò)爬蟲(chóng)框架庫(kù),沒(méi)有之一。最好用的框架。圖像處理,該庫(kù)是你的不二之選。 文 |?豆豆 來(lái)源:Python 技術(shù)「ID: pythonall」 ...
閱讀 2038·2021-11-19 11:37
閱讀 727·2021-11-11 16:54
閱讀 1176·2021-11-02 14:44
閱讀 3072·2021-09-02 15:40
閱讀 2378·2019-08-30 15:44
閱讀 968·2019-08-29 11:17
閱讀 1069·2019-08-26 14:06
閱讀 1562·2019-08-26 13:47