10个惊艳的Ruby单行代码

有人想出了Scala的10个单行代码例子。然后CoffeeScript版本迅速崛起,于是我想到发布一个Ruby版本的。我觉得Ruby的语法比Scala清洁点,虽然实质上(至少就这些例子来说)是比较相似的。

1.数组中的每个元素乘以2


  1. (1..10).map { |n| n * 2 } 

2.数组中的元素求和


  1. (1..1000).inject { |sum, n| sum + n } 

或使用(内置的)Symbol#to_proc语法,自Ruby 1.8.7之后可用:


  1. (1..1000).inject(&:+) 

甚至就直接传递一个符号:


  1. (1..1000).inject(:+) 

3.验证在字符串中是否有tokens存在


  1. words = ["scala", "akka", "play framework", "sbt", "typesafe"] 
  2. tweet = "This is an example tweet talking about scala and sbt." 
  3. words.any? { |word| tweet.include?(word) } 

4.读取文件


  1. file_text = File.read("data.txt") 
  2. file_lines = File.readlines("data.txt") 

后者包括“\n”在数组每个元素的末端,它可以通过附加 .map { |str| str.chop } 或者使用替代版本来做修整:


  1. File.read("data.txt").split(/\n/) 

5.生日快乐


  1. 4.times { |n| puts "Happy Birthday #{n==2 ? "dear Tony" : "to You"}" } 

6.过滤数组中的数字


  1. [49, 58, 76, 82, 88, 90].partition { |n| n > 60 } 

7.获取并解析一个XML Web服务


  1. require 'open-uri' 
  2. require 'hpricot' 
  3. results = Hpricot(open("http://search.twitter.com/search.atom?&q=scala")) 

这个例子需要open-uri或hpricot或等效库(如果你愿意,你可以使用内置的)。没有太多的代码,但Scala在这里明显胜出。

8.在数组中查找最小(或最大)值


  1. [14, 35, -7, 46, 98].min 
  2. [14, 35, -7, 46, 98].max 

9.并行处理


  1. require 'parallel' 
  2. Parallel.map(lots_of_data) do |chunk| 
  3.   heavy_computation(chunk) 
  4. end 

不像Scala,多核支持不是内置的。它需要parallel 或类似的东西。

10.埃拉托斯特尼筛法

Scala的单行代码很聪明,但完全不可读。此处虽然并非单行代码,但用Ruby可以写出更简单的实现:


  1. index = 0 
  2. while primes[index]**2 <= primes.last 
  3.       prime = primes[index] 
  4.       primes = primes.select { |x| x == prime || x % prime != 0 } 
  5.       index += 1 
  6. end 
  7. p primes 

最后一个例子直接来自StackOverflow。虽然不是最漂亮的代码,但提供了一种思路。

作者:小峰

来源:51CTO

时间: 2024-09-10 12:28:28

10个惊艳的Ruby单行代码的相关文章

10 个惊艳的 Ruby 单行代码

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之后可用

10个惊艳的 CoffeeScript 单行代码

10个惊艳的 CoffeeScript 单行代码 你可能已经读过Marcus Kazmierczak博客中的<10 Scala One Liners to Impress Your Friends>.虽然我不懂Scala(以及Java),但是它看上去真心不错,所以我决定也要惊艳我的朋友一番--人家从Java到Scala,我从Javascript到CoffeeScript.假设所有例子使用node.js作为环境. [译者注]:译者对CoffeeScript不太了解,只是觉得这种单行代码还挺有艺术

10 个惊艳的 CoffeeScript 单行代码

可能已经读过Marcus Kazmierczak博客中的<10 Scala One Liners to Impress Your Friends>.虽然我不懂Scala(以及Java),但是它看上去真心不错,所以我决定也要惊艳我的朋友一番--人家从Java到Scala,我从Javascript到CoffeeScript.假设所有例子使用node.js作为环境. [译者注]:译者对CoffeeScript不太了解,只是觉得这种单行代码还挺有艺术感的,于是粗糙地翻译出来分享给大家,有不对的地方还请

10个惊艳的Swift单行代码_Swift

几年前,一篇表述"10个Scala函数式单行代码"的文章非常受欢迎,并且随后立马出现了其他的语言版本,例如Haskell版本,Ruby版本,Groovy版本,Clojure版本,Python版本,C#版本,F#版本,CoffeeScript版本等. 我们不知道有多少人真的对这些单行代码印象深刻,但我认为,这能激励大家去了解更多有关于函数式编程的内容. 1 数组中的每个元素乘以2 特别简单,尤其是使用map解决的话. (1...1024).map{$0 * 2} 2 数组中的元素求和 虽

福特获利超预期令华尔街惊艳股价劲扬逾10%

中新网11月3日电美国福特汽车周一令华尔街"惊艳",不但第3季交出高于市场预期的获利数字,还宣布将2011年财测调高为"获利坚稳".受此支撑,周一美股早盘,福特股价劲扬逾一成. 据台湾<工商时报>引述外电报道,福特是今年美国汽车生产大厂中唯一未宣告破产者.该公司因削减成本发挥效益,以及北美与其它主要市场的市占率提高,于第3季交出转亏为盈的亮丽财报. 福特公布,第3季获利9.97亿美元或每股29美分,远优于去年同期的亏损1.61亿美元或每股7美分.该公司的

20款效果惊艳的产品宣传网站

  比起纯粹的商务网站,设计师会更青睐允许自由发挥创意的项目.从网页设计的角度上来说,"普通"的网站也正是需要借助创意来脱颖而出,尤其是产品宣传网站,更是有足够的空间来供设计师来发挥他们的狂拽酷炫的创意.实际上如果你正在寻求网站设计创意灵感的话,那么这些宣传网站正是你需要的. 接下来我们要推荐的20个宣传网站中,既有精致的产品宣传页,也有氛围营造得恰如其分的活动宣传页,还有几个创意爆棚的个人宣传网站.这些网站无一不是设计精美的典范,更重要的是其中包含了设计师精心设计的交互和动效.如果你

从未如此惊艳!你好,SuperTextView

[引自CoorChice的博客]简介 欢迎使用SuperTextView,这篇文档将会向你展示如何使用这个控件来提高你构建项目的效率. SuperTextView继承自TextView,它能够大量的减少布局的复杂程度,并且使得一些常见的效果变得十分容易实现且高效.同时,它内置了动画驱动,你只需要合理编写Adjuster,然后startAnim()就可以看到预期的动画效果.它仅仅是一个控件,所以你可以不费吹灰之力的在你的项目中集成使用. 特点 你从此不必再为背景图编写和管理大量<shape>文件

Photoshop打造美女咖啡惊艳图片(2)

Photoshop打造美女咖啡惊艳图片5:左上向右下一拉,画布如图.急....我的蒙板为什么不起作用?可能有人会这样问.前后对比,错在那里大家应该知道了吧. 7:BB一直相信:作图是讲究天赋的.没有天赋,别人不会看你的教程:没有天赋,你不会如何发教程:没有天赋,周星驰就不会说这句话.名人说的话,是很有说服力和号召力的,很多广告就是这样做的.大家不相信吗?请看这一拉(左上向右下这一拉),拉多长?拉的角度如何?这操作对图效的影响如何?请自行试试.例如:我如图一拉,可以为背景层的MM添加一层蒙胧的光辉

JavaSwing也惊艳之二:环环相套

一.序言 关于"Java做不好桌面"的争论已经由来已久.虽然Swing和Java2D已经有超 过十年的历史,也有JIDE.JGoodies.TWaver等不少开源Swing组件,但是用 Java做桌面程序仍然不是一件轻松的事.本<Java也惊艳>系列文章,就是想通 过一些简单生动的例子,和大家一起认识Java.探索Swing.其实你只需要多一 点创意.多一点耐心,你的Java程序也可以"惊艳"!本文就带您一起进入Java 的惊艳之旅. 二.立体套管效果