`
熊likecocoa
  • 浏览: 17637 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

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
翻译作者:码农网 – 小峰
分享到:
评论

相关推荐

    ruby语法基础教程

    §2.1.2 在Linux上安装Ruby 10 §2.2 运行Ruby 10 §2.2.1 使用Ruby 10 §2.2.2 使用FreeRIDE和SciTE 11 §2.2.3 使用fxri 13 §2.3 Ruby-irb 14 §2.4 Ruby-ri 15 §2.5 RubyGems 15 第三章 类与对象 17 §3.1 类的...

    hash_formatter:Hash Formatter 是一个为代码编辑器格式化 Ruby 哈希的库

    这是一个用于格式化 Ruby 哈希的小型简单库,旨在供文本编辑器使用。 它使用和而不是正则表达式,让它可以轻松解析最棘手的 Ruby 代码。 目前,它的格式选项是固执和简单化的。 您可以使用以下格式格式化 Ruby 哈希...

    gito:git helper工具,可以使用单行代码克隆openauto-installedit

    吉托 git helper工具可使用单行代码克隆/打开/自动安装/编辑git项目。 &gt; gito cesarferreira / dryrun -e产品特点 快速克隆任何git项目并更改目录。 可以自动在finder打开文件夹。 可以在任何编辑器中自动打开项目。...

    解读Ruby中注释的使用方法

    Ruby行内注释的代码在运行时被忽略。单行注释#字符开始,他们从#到行末如下: #!/usr/bin/ruby -w # This is a single line comment. puts Hello, Ruby! 上述程序执行时,会产生以下结果: Hello, Ruby! Ruby...

    avo:基于配置,免维护,可扩展的Ruby on Rails管理员

    代码驱动的配置-通过编写Ruby代码来完全配置Rails仪表板。 资源管理-通过一个命令为Active Record创建一个CRUD接口。 周围不再有复制粘贴视图和控制器文件。 Active Storage支持-与ActiveStorage轻松,单行,单...

    详解Ruby中的代码块及其参数传递

    {}一般用在单行语句上,do..end用在多行语句上。 (1..4).each{|v| print #{v} } #输出1 2 3 4  块可以带参数,与函数参数不同,块参数用||封装,当然,可以带多个参数。这些参数怎么定义,实际上是在函数内部...

    atom-ruby-block-converter:转换Ruby块样式

    在单行和多行格式之间转换Ruby块。 或在大括号和do-end语句之间。 指示 {} =&gt;做完 将光标放在括号之间,然后单击快捷方式。 苹果系统 Linux / Win 普通的 ctrl-} alt-] 没有加入 ctrl-alt-} alt-} 做结束=&gt; {}...

    salmon:Ruby的预处理器,添加了类似Haskell的语法

    +&gt; maggie # prints 55目标在不破坏任何旧语法的情况下向Ruby添加一些新语法生成的代码应该可读(即,您应该能够将Salmon生成的一些Ruby代码发送给某人)。新增功能简单的课程data Just val 变成Just = Struct . new...

    ideal:Ruby 2.1.2 兼容 iDealv3 支付网关

    Ideal 是一个简单的 Ruby 2.1 兼容网关,可以使用荷兰 iDeal 协议联系任何银行。 由于没有像样的可用,我们决定开发自己的。 现在您也可以使用它了! 如何使用它? 使用它非常简单,您可以简单地克隆代码然后使用...

    FoodieShare:FoodieShare是由Ruby on Rails实现的美食社交网络应用,用户可以在其中搜索餐厅并发表评论

    美食分享这是一个基于yelp的社交网络应用程序,用户可以在其中共享餐厅评论,彼此关注并在芝加哥寻找优质餐厅登录页面 发表评论 餐厅清单 餐厅详情 用户主页设置安装HomeBrew Homebrew是一种命令行工具,可轻松从源...

    javaSE代码实例

    2.1.1 单行注释 12 2.1.2 区域注释 12 2.1.3 文档注释 13 2.2 基本数据类型 14 2.2.1 整型 15 2.2.2 浮点型 17 2.2.3 char型 17 2.2.4 boolean型 18 2.3 基本数据类型值间的转换 18 2.3.1 自动...

    Website:Re-Volt America社区的网站

    这是一个单行代码: \curl -sSL https://get.rvm.io | bash -s stable --ruby \curl -sSL https://get.rvm.io | bash -s stable --ruby 。 设置 有关如何设置网站以进行开发的说明。 确保已gem install bundle程序...

    matlab转换java代码-eabase:DaHiddenGitHub个人资料

    有时:ARM汇编/机器代码,Perl,Ruby,Go 嵌入式硬件设计 逆向工程软硬事物... 浪费我时间的事情(但挽救了你的生命) 将Powershell cmdlet转换为Bash 将任何Windows长cmd / pwsh垃圾转换为单行 不断困扰视窗所有...

    如何完全使用python实现工作

    第四,所有对windows的垄断的血泪控诉都直接对mathwork转过来吧~什么对开源,对自由,对的打击信仰~绝对适用~第五,python大部分时候如果不比你好用至少跟你一样好用,而这只是它不到10%的功能,几个程序员业余...

    growing-rails-controllers:Growing Rails Applications in Practice 一书中描述的方法的示例控制器规范

    每个场景都清楚地分为。 不使用before块。 在适当的情况下更喜欢不是模拟。 将重复提取到普通的 Ruby 方法中 使用expect而不是allow更自信的规格。 Ruby 1.9 哈希语法 不使用tap 我对书中的代码做了一些小的...

    splitjoin:splitjoin.vim的Emacs端口

    splitjoin.el Emacs端口。ScreenCast安装splitjoin在和splitjoin上可用您可以使用以下命令安装... MX软件包安装[RET] splitjoin [RET]支持模式Ruby模式咖啡模式命令Mx splitjoin 多行代码和单行代码之间的过渡。

    Vim/Gvim配置文件+配色方案_By Marslo

    ctrl+g:打开最近打开的10个文件列表(这个非常方便,不用:e+路径了!) ctrl+q(,v):注释/反注释(可以区域注释,也可以单行注释) --------------------------------------------------------------- 所安装的...

    MagicalRecord:超棒的核心数据轻松获取!

    魔法唱片 在软件工程中,活动记录模式是在软件中找到的一种设计模式,该软件将其数据存储在关系数据库中。... 该代码的目标是: 清理我的核心数据相关代码允许清晰,简单的单行读取当需要优化请求时,仍然允许修改NSFet

    基于FMDB数据库操作类PYFMDB.zip

    快速入门导入PYFMDB你可以在 Podfile 中加入下面一行代码来使用PYFMDBpod 'PYFMDB'创建自定义Table类创建一个Table类继承PYTable,例如演示代码中创建了CarTable类。设置数据库表名在CarTable.m 中 重写如下方法:-...

Global site tag (gtag.js) - Google Analytics