国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

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

taowen / 1832人閱讀

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

Ricardo Tomasi在自己的博客上分享了十則CoffeeScript的一行程序,展示了CoffeeScript強(qiáng)大的表達(dá)力。你可以把這個(gè)頁(yè)面發(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會(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 = 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. 埃拉托斯特尼篩法

埃拉托斯特尼篩法,簡(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 p
10. 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)換為字符串,如果字符串的值為undefinednull,則給出一個(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

相關(guān)文章

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

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

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

    摘要:不要使用類(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ù) 終于,你不用...

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

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

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

    摘要:那在屆有哪些被封神的庫(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」 ...

    ninefive 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<