当前位置: 首页 > 科技观察

10个惊人的Ruby单行代码

时间:2023-03-11 21:44:29 科技观察

有人想出了10个Scala单行代码。然后CoffeeScript版本火了,我想发布一个Ruby版本。我认为Ruby的语法比Scala的更清晰,尽管实质(至少对于这些示例而言)是相似的。1.数组中的每个元素乘以2(1..10).map{|n|n*2}2.数组中的元素求和(1..1000).inject{|sum,n|sum+n}或使用(内置)Symbol#to_proc语法,自Ruby1.8.7起可用:(1..1000).inject(&:+)或什至直接传递一个符号:(1..1000).inject(:+)3.验证字符串words=["scala","akka","playframework","sbt","typesafe"]tweet="Thisisanexampletweettalkingaboutscalaandsbt."words.any?|word|tweet.include?(word)}4.读取文件file_text=File.read("data.txt")file_lines=File.readlines("data.txt")后者在数组末尾的每个元素中包含"\n",可以通过追加.map来修剪{|海峡|str.chop}或使用替代版本:File.read("data.txt").split(/\n/)5.生日快乐4.times{|n|puts"HappyBirthday#{n==2?"dearTony":"toYou"}"}6.过滤数组[49,58,76,82,88,90].partition{|n|中的数字n>60}7.获取并解析一个XMLWeb服务此示例需要open-uri或hpricot或等效库(如果您愿意,可以使用内置库)。代码不多,但Scala显然在这里胜出。8.在数组[14,35,-7,46,98].min[14,35,-7,46,98].max9中找到最小值(或***)。并行处理需要'parallel'Parallel.map(lots_of_data)do|chunk|heavy_computation(chunk)end不像Scala,多核支持不是内置的。它需要并行或类似的东西。10.SieveofEratosthenesScala的一行代码很聪明,但完全不可读。虽然这不是一行代码,但可以用Ruby编写更简单的实现:index=0whileprimes[index]**2<=primes.lastprime=primes[index]primes=primes.select{|x|x==prime||x%prime!=0}index+=1endpprimes***直接来自StackOverflow的示例。虽然不是最漂亮的代码,但它提供了一个想法。翻译链接:http://www.codeceo.com/article/10-ruby-oneline-code.html英文原文:10RubyOneLinerstoImpressYourFriends