Ruby篇

Posted 汇智网

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ruby篇相关的知识,希望对你有一定的参考价值。

几年前,函数式编程的复兴正值巅峰,一篇介绍 Scala 中 10 个单行函数式代码的博文在网上走红。很快地,一系列使用其他语言实现这些单行代码的文章也随之出现,比如 Haskell, Ruby, Groovy, Clojure, Python,C#, F#, CoffeeScript。

每篇文章都令人印象深刻的揭示了这些语言中一些出色优秀的编程特征。编程高手们利用这些技巧提高编程速度、改进软件质量,编程初学者能从这些简洁的预防中学到各种编程语言的真谛。本《震惊小伙伴的单行代码系列》将逐一介绍这些各种编程语言单行代码文章,供大家学习参考。

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(&:+)

或者直接传人symbol:

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

3、判断一个字符串中是否存在某些词

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 service数据并分析

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语言不一样,Ruby里的多核支持不是内置的。它需要使用parallel 或其它类似的 gem。

10. “Sieve of Eratosthenes”算法

Scala语言里一行代码就能完成,但可读性不好,在Ruby里可以简单的实现,但不是一行代码:

index = 0while primes[index]**2 <= primes.last
      prime = primes[index]
      primes = primes.select 
         { |x| x == prime || x % prime != 0 } index += 1endp primes

这个例子直接拷贝自 StackOverflow。不是特别简洁,但你可以看明白。




汇智网内容已经覆盖以下编程技术,发送相应的文字会收获相关课程信息:

Node.jsMongoDBjavascript、C、C#、php、Python、AngularjsIonic、React、UML、redis、mysqlnginx、CSS、htmlBootstrap、Flask、Gulp、Mocha、Git、Meteor、Canvas、zebra、Typescript、Material Design Lite、ECMAScript、Elasticsearch、Mongoose、jQuery、d3.js、django、cheerioSVG、phoneGap、jQueryMobile、Saas、YAML、Vue.js、webpack、Firebird,jQuery Easy UI,ruby,asp.net,c++,Express......


以上是关于Ruby篇的主要内容,如果未能解决你的问题,请参考以下文章

ruby 方便的片段

ruby serverspec片段

ruby 片段

ruby Codiing片段

ruby RubySteps 012 - Rails - 迷你框架片段

Ruby篇