有人想出了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
翻译作者:码农网 – 小峰
分享到:
相关推荐
在Ruby编程语言中,源代码的布局和编程风格是至关重要的,因为它直接影响到代码的可读性和维护性。本文将深入探讨Ruby的源代码布局规范和编程风格建议。 首先,Ruby源文件应该使用UTF-8编码,这是国际标准,确保...
总之,二十分钟的Ruby入门教程将带你初步了解这个优雅的编程语言。虽然短短的时间无法让你精通所有细节,但足以激发你进一步探索Ruby世界的兴趣。从基本语法到面向对象编程,Ruby提供了一种直观且富有表达力的方式来...
`{}`通常用于单行代码,而`do..end`用于多行代码。例如: ```ruby (1..4).each { |v| print "#{v} " } # 输出 1 2 3 4 ``` 块可以带有参数,这些参数用`||`包裹,并且在定义块的函数内部被处理。例如: ```ruby ...
此外,Ruby还拥有一个丰富而强大的标准库,提供了大量的内置工具和功能,使得开发者能够快速构建出各种类型的应用程序。其中最为人所熟知的是Ruby on Rails(简称RoR)这一Web开发框架,它采用了“约定优于配置”的...
Ruby是一种基于行的语言,通常情况下,每遇到一个换行符就意味着一个语句的结束。Ruby的代码是从上到下依次执行的,且没有所谓的主程序。如果需要,可以通过引用其他程序块开始定义各种类和模块,并在最后执行主要的...
- **交互式环境**:Ruby提供了一个名为**IRB**(Interactive Ruby)的交互式环境,只需在命令行中输入`irb`即可启动,便于实验Ruby代码。 ##### Ruby的核心概念: - **一切皆对象**:在Ruby中,从基本数据类型到...
`=`会输出变量或表达式的值,`==`则会原样输出,`-`用于执行Ruby代码但不输出。 5. **注释**:在Haml中,`/`开始的行被视为注释,不会出现在生成的HTML中。单行注释以`/`开始,到行尾结束;多行注释则以`-#`开始,...
Ruby 支持单行注释和多行注释。 #### 数字和变量 Ruby 中的数字(Numbers)可以是整数、浮点数等。Ruby 支持多种类型的变量,例如局部变量(Local Variables)、实例变量(Instance Variables)、类变量(Class ...
- **编写第一个程序**:创建一个简单的Ruby程序,例如输出“Hello, World!”,可以帮助初学者快速了解Ruby的基本语法。 - **集成开发环境**:选择合适的IDE或编辑器(如RubyMine、Visual Studio Code等),可以提高...
例如,`print(10)`或`puts(10)`会在控制台上输出整数10。在Ruby中,进行四则运算时遵循常规的数学运算规则,乘法使用`*`,除法使用`/`。运算的优先级遵循“先乘除,后加减”,可以通过括号`()`来改变运算顺序。 ...
5. 代码块和范围:Ruby支持代码块的使用,这使得在方法中传递代码变得容易。 6. 内建的反射机制和元编程能力:Ruby允许开发者在运行时检查和修改对象的行为,提供了强大的元编程能力。 7. 开源和社区支持:Ruby作为...
Ruby是一种动态类型的编程语言,以其简洁的语法和强大的功能而受到开发者喜爱。下面是对Ruby语法的详细解析: 1. 变量与常量 - 局部变量:以小写字母或下划线开头,如`var`或`_var`。 - 全局变量:以美元符号`$`...
- **注释:** 在Ruby中,使用`#`符号来表示单行注释。 - **输出:** `puts`函数用于在控制台输出文本,并自动换行;如果需要在同一行输出文本而不换行,则可以使用`print`函数。 - **变量:** 变量声明时不需要指定...
- **单行注释:** 在Ruby中,以`#`开头的为单行注释。 - **多行注释:** 多行注释可以使用`=begin`和`=end`来标记。 - **表达式分隔符:** Ruby中的表达式可以通过换行或分号来分隔,但其他空白字符通常不影响解析。...
- **each 迭代器**:`each` 是 Ruby 中一个非常强大的迭代器,用于遍历数组或集合中的每个元素。例如: ```ruby [1, 2, 3, 4, 5].each do |num| puts num end ``` `each` 迭代器和 `for` 循环的主要区别在于,...
Ruby还有一种简洁的单行条件表达式,如`a if b`。 8. **模块和命名空间** 模块用于组织代码,避免命名冲突。通过`include`或`extend`导入模块中的方法。Ruby还有内置的`Kernel`模块,包含了大部分内建的全局函数。...
在Ruby中,注释是用来记录代码功能、用途等的重要工具。 1. **单行注释**: 使用 `#` 符号开始。例如: ```ruby # 这是一条单行注释 ``` 2. **多行注释**: 使用 `=begin` 和 `=end` 包围。例如: ```ruby =begin...