摘要:在自己的博客上分享了十則的一行程序,展示了強大的表達力。你可以把這個頁面發給你的小伙伴也許還有妹紙,讓他們震驚一下下。它允許你將一個數組作為一組參數傳遞。和均接受可變參數,例如返回。
Ricardo Tomasi在自己的博客上分享了十則CoffeeScript的一行程序,展示了CoffeeScript強大的表達力。你可以把這個頁面發給你的小伙伴(也許還有妹紙),讓他們震驚一下下。
1. 列表中每項乘2i * 2 for i in [1..10]2. 列表求和
[1..1000].reduce (t, s) -> t + s3. 驗證字符串中是否包含某個詞
因為我們有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特有的運算符,只是一個小聰明。~是位求反操作符,~x的效果等于-x-1。這里,indexOf會返回位置,如果找不到,則返回-1。-(-1)-1為0,0為false。
4. 讀取文件fs.readFile "data.txt", (err, data) -> fileText = data
同步版本:
fileText = fs.readFileSync("data.txt").toString()
在node.js領域,只有在應用啟動的時候同步讀取文件是可以接受的。其他時候應該使用異步版本。
5. 生日快樂是不是感覺很像偽代碼?
console.log "Happy Birthday #{if i is 3 then "dear Robert" else "to You"}" for i in [1..4]6. 過濾列表中的數字
將列表中的成績分成passed(通過)和failed(掛科)兩類。
(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庫:
request.get { uri:"path/to/api.json", json: true }, (err, r, body) -> results = body8. 尋找列表的最大值或最小值
這種情況下apply函數很有用。它允許你將一個數組作為一組參數傳遞。Math.max和Math.min均接受可變參數,例如Math.max 30, 10, 20返回30。使用apply可以讓它們配合數組使用:
Math.max.apply @, [14, 35, -7, 46, 98] # 98 Math.min.apply @, [14, 35, -7, 46, 98] # -79. 埃拉托斯特尼篩法
埃拉托斯特尼篩法,簡稱埃氏篩或愛氏篩,是一種由埃及數學家埃拉托斯特尼所提出的一種簡單檢定素數的算法。
(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問題:輸出0到100的數字,但是3的倍數輸出Fizz,5的倍數輸出Buzz,同時是3和5的倍數的輸出FizzBuzz。
這個問題在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]
竅門在于當對數組使用+運算符時它會被轉換為字符串,如果字符串的值為undefined或null,則給出一個空字符串。
結論現代語言的表現力真令人吃驚。
原文 10 CoffeeScript One Liners to Impress Your Friends
編譯 SegmentFault
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/77989.html
摘要:看清楚了,不要眨眼睛,一定要收藏,方便大家以后裝逼以及和別的語言撕逼解釋如果為空直接返回,如果比第一個數小的數組放到左邊并遞歸,第一個數放到中間,比第一個數大的數組放到右邊并遞歸測試非常完美結論就是這么牛逼,有更短的快速 看清楚了,不要眨眼睛,一定要收藏,方便大家以后裝逼以及和別的語言撕逼 qsort=(l)->if l.length== 0 then l else qsort(l[...
摘要:不要使用類函數終于,你不用再看到建議不要使用函數的提示了。因為從核心上完全移除了它們,這意味著請你移步至更好的類函數,或者更靈活的層。將從數據庫獲取一個元數據,如果您正在循環訪問特定文章的元數據,則可以在循環中使用它。 showImg(https://segmentfault.com/img/bV75FM?w=1024&h=534); 1. 不要使用 mysql_ 類函數 終于,你不用...
摘要:那在屆有哪些被封神的庫呢,今天就給大家介紹十個堪稱殺手級別的工具包。總之,是一款非常強大且易用的網絡請求庫。地址最好用的框架。圖像處理,該庫是你的不二之選。 Pyt...
摘要:那在屆有哪些被封神的庫呢,今天就給大家介紹十個堪稱殺手級別的工具包。該庫是在之上完善的,自此請求就變得異常的簡單,一行代碼即可搞定。這是最流行的網絡爬蟲框架庫,沒有之一。最好用的框架。圖像處理,該庫是你的不二之選。 文 |?豆豆 來源:Python 技術「ID: pythonall」 ...
閱讀 2027·2021-11-19 11:37
閱讀 715·2021-11-11 16:54
閱讀 1161·2021-11-02 14:44
閱讀 3049·2021-09-02 15:40
閱讀 2368·2019-08-30 15:44
閱讀 951·2019-08-29 11:17
閱讀 1059·2019-08-26 14:06
閱讀 1552·2019-08-26 13:47