成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

十個(gè)CoffeeScript一行程序——震驚你的小伙伴

taowen / 1852人閱讀

摘要:在自己的博客上分享了十則的一行程序,展示了強(qiáng)大的表達(dá)力。你可以把這個(gè)頁面發(fā)給你的小伙伴也許還有妹紙,讓他們震驚一下下。它允許你將一個(gè)數(shù)組作為一組參數(shù)傳遞。和均接受可變參數(shù),例如返回。

Ricardo Tomasi在自己的博客上分享了十則CoffeeScript的一行程序,展示了CoffeeScript強(qiáng)大的表達(dá)力。你可以把這個(gè)頁面發(fā)給你的小伙伴(也許還有妹紙),讓他們震驚一下下。

1. 列表中每項(xiàng)乘2
i * 2 for i in [1..10]
2. 列表求和
[1..1000].reduce (t, s) -> t + s
3. 驗(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會返回位置,如果找不到,則返回-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)用啟動的時(shí)候同步讀取文件是可以接受的。其他時(shí)候應(yīng)該使用異步版本。

5. 生日快樂

是不是感覺很像偽代碼?

console.log "Happy Birthday #{if i is 3 then "dear Robert" else "to You"}" for i in [1..4]
6. 過濾列表中的數(shù)字

將列表中的成績分成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 = body
8. 尋找列表的最大值或最小值

這種情況下apply函數(shù)很有用。它允許你將一個(gè)數(shù)組作為一組參數(shù)傳遞。Math.maxMath.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] # -7
9. 埃拉托斯特尼篩法

埃拉托斯特尼篩法,簡稱埃氏篩或愛氏篩,是一種由埃及數(shù)學(xué)家埃拉托斯特尼所提出的一種簡單檢定素?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 p
10. fizzbuzz

fizzbuzz問題:輸出0到100的數(shù)字,但是3的倍數(shù)輸出Fizz,5的倍數(shù)輸出Buzz,同時(shí)是3和5的倍數(shù)的輸出FizzBuzz。

這個(gè)問題在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]

竅門在于當(dāng)對數(shù)組使用+運(yùn)算符時(shí)它會被轉(zhuǎn)換為字符串,如果字符串的值為undefinednull,則給出一個(gè)空字符串。

結(jié)論

現(xiàn)代語言的表現(xiàn)力真令人吃驚。


原文 10 CoffeeScript One Liners to Impress Your Friends
編譯 SegmentFault

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/77989.html

相關(guān)文章

  • 震驚】javascript一句話寫出快速排序(coffeescript)

    摘要:看清楚了,不要眨眼睛,一定要收藏,方便大家以后裝逼以及和別的語言撕逼解釋如果為空直接返回,如果比第一個(gè)數(shù)小的數(shù)組放到左邊并遞歸,第一個(gè)數(shù)放到中間,比第一個(gè)數(shù)大的數(shù)組放到右邊并遞歸測試非常完美結(jié)論就是這么牛逼,有更短的快速 看清楚了,不要眨眼睛,一定要收藏,方便大家以后裝逼以及和別的語言撕逼 qsort=(l)->if l.length== 0 then l else qsort(l[...

    Cheng_Gang 評論0 收藏0
  • 十個(gè)你需要在 PHP 7 中避免的坑

    摘要:不要使用類函數(shù)終于,你不用再看到建議不要使用函數(shù)的提示了。因?yàn)閺暮诵纳贤耆瞥怂鼈?,這意味著請你移步至更好的類函數(shù),或者更靈活的層。將從數(shù)據(jù)庫獲取一個(gè)元數(shù)據(jù),如果您正在循環(huán)訪問特定文章的元數(shù)據(jù),則可以在循環(huán)中使用它。 showImg(https://segmentfault.com/img/bV75FM?w=1024&h=534); 1. 不要使用 mysql_ 類函數(shù) 終于,你不用...

    leanote 評論0 收藏0
  • 秀的一批,那些你不得不知的 Python 殺手級框架

    摘要:那在屆有哪些被封神的庫呢,今天就給大家介紹十個(gè)堪稱殺手級別的工具包??傊?,是一款非常強(qiáng)大且易用的網(wǎng)絡(luò)請求庫。地址最好用的框架。圖像處理,該庫是你的不二之選。 Pyt...

    zeyu 評論0 收藏0
  • 秀的一批,那些你不得不知的 Python 殺手級框架!

    摘要:那在屆有哪些被封神的庫呢,今天就給大家介紹十個(gè)堪稱殺手級別的工具包。該庫是在之上完善的,自此請求就變得異常的簡單,一行代碼即可搞定。這是最流行的網(wǎng)絡(luò)爬蟲框架庫,沒有之一。最好用的框架。圖像處理,該庫是你的不二之選。 文 |?豆豆 來源:Python 技術(shù)「ID: pythonall」 ...

    ninefive 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<