10個驚豔的Ruby單行程式碼
本文由碼農網 – 小峰原創翻譯,轉載請看清文末的轉載要求,歡迎參與我們的付費投稿計劃!
有人想出了Scala的10個單行程式碼例子。然後CoffeeScript版本迅速崛起,於是我想到釋出一個Ruby版本的。我覺得Ruby的語法比Scala清潔點,雖然實質上(至少就這些例子來說)是比較相似的。
1.陣列中的每個元素乘以2
(1..10).map { |n| n * 2 }
2.陣列中的元素求和
(1..1000).inject { |sum, n| sum + n }
或使用(內建的)Symbol#to_proc語法,自Ruby 1.8.7之後可用:
(1..1000).inject(&:+)
甚至就直接傳遞一個符號:
(1..1000).inject(:+)
3.驗證在字串中是否有tokens存在
words = ["scala", "akka", "play framework", "sbt", "typesafe"] tweet = "This is an example tweet talking about scala and sbt." words.any? { |word| tweet.include?(word) }
4.讀取檔案
file_text = File.read("data.txt") file_lines = File.readlines("data.txt")
後者包括“\n”在陣列每個元素的末端,它可以通過附加 .map { |str| str.chop }
或者使用替代版本來做修整:
File.read("data.txt").split(/\n/)
5.生日快樂
4.times { |n| puts "Happy Birthday #{n==2 ? "dear Tony" : "to You"}" }
6.過濾陣列中的數字
[49, 58, 76, 82, 88, 90].partition { |n| n > 60 }
7.獲取並解析一個XML Web服務
require 'open-uri' require 'hpricot' results = Hpricot(open("http://search.twitter.com/search.atom?&q=scala"))
這個例子需要open-uri或hpricot或等效庫(如果你願意,你可以使用內建的)。沒有太多的程式碼,但Scala在這裡明顯勝出。
8.在陣列中查詢最小(或最大)值
[14, 35, -7, 46, 98].min [14, 35, -7, 46, 98].max
9.並行處理
require 'parallel' Parallel.map(lots_of_data) do |chunk| heavy_computation(chunk) end
不像Scala,多核支援不是內建的。它需要parallel 或類似的東西。
10.埃拉託斯特尼篩法
Scala的單行程式碼很聰明,但完全不可讀。此處雖然並非單行程式碼,但用Ruby可以寫出更簡單的實現:
index = 0 while primes[index]**2 <= primes.last prime = primes[index] primes = primes.select { |x| x == prime || x % prime != 0 } index += 1 end p primes
最後一個例子直接來自StackOverflow。雖然不是最漂亮的程式碼,但提供了一種思路。
譯文連結:http://www.codeceo.com/article/10-ruby-oneline-code.html
英文原文:10 Ruby One Liners to Impress Your Friends
翻譯作者:碼農網 – 小峰
[ 轉載必須在正文中標註並保留原文連結、譯文連結和譯者等資訊。]
相關文章
- 10個驚豔的Swift單行程式碼Swift行程
- 10個驚豔的CoffeeScript單行程式碼行程
- 總結28個令人驚豔的JavaScript單行程式碼JavaScript行程
- 這 10 套專案,一個比一個驚豔!
- 一個令人驚豔的萬能碼(安全掃碼專業委員會)
- 10款效果驚豔的HTML5應用和原始碼HTML原始碼
- 30 個驚豔的 Bootstrap 擴充套件外掛boot套件
- 一個令人驚豔的ChatGPT專案,開源了!ChatGPT
- 如何寫出一個驚豔面試官的深複製?面試
- 安利一個驚豔的紅樓夢視覺化作品視覺化
- 20 個具有驚豔效果的 jQuery 影像縮放外掛jQuery
- 50行ruby程式碼開發一個區塊鏈區塊鏈
- 十款效果驚豔的HTML5應用和原始碼HTML原始碼
- 2017年30個驚豔的Python開源專案Python
- 超級驚豔 10款HTML5動畫特效推薦HTML動畫特效
- css樣式相關的驚豔的屬性CSS
- 自媒體人必備5個工具,最後一個太驚豔
- 如何用ppt做出驚豔的視覺化圖表?教你3個妙招視覺化
- 驚豔!9個不可思議的 HTML5 Canvas 應用試驗HTMLCanvas
- 震驚小夥伴的單行程式碼(Python篇)行程Python
- 分享web前端裡驚豔的HTML5的demoWeb前端HTML
- Python讓你成為AI繪畫大師,簡直太驚豔了!(附程式碼)PythonAI
- rails on ruby,ruby on rails 之程式碼塊(二)AI
- 11款效果驚豔的HTML5動畫應用HTML動畫
- 10個簡單實用的 jQuery 程式碼片段jQuery
- 《妖怪名單之前世今生》手遊今日不刪檔!主題曲驚豔亮相
- 提高程式執行效率的10個簡單方法
- 震驚,canvas文字粒子效果,只需要100行程式碼,簡單易懂。Canvas行程
- 8款驚豔的HTML5粒子動畫特效HTML動畫特效
- 8款效果驚豔的HTML5 3D動畫HTML3D動畫
- Material Design Lite,簡潔驚豔的前端工具箱。Material Design前端
- Ruby 中的閉包-程式碼塊
- [譯] Ruby 2.6 String的split 方法支援程式碼塊執行
- 驚歎!這個盲人程式設計師是這樣寫程式碼的程式設計師
- 一些驚豔到我的運維實施技巧和思路運維
- HTC智慧手錶概念渲染圖:最驚豔的穿戴裝置
- 13 款驚豔的 Node.js 框架——第1部分Node.js框架
- 13 款驚豔的 Node.js 框架——第2部分Node.js框架