早上在rubychina看到有人贴了一段99乘法表的一小段ruby代码。

 1ruby 简单就是美~i=1
 2ruby 简单就是美~while i<=9
 3ruby 简单就是美~  j=1
 4ruby 简单就是美~  while j<=i
 5ruby 简单就是美~    s=j*i
 6ruby 简单就是美~    print("#{j}*#{i}=#{s}\t")
 7ruby 简单就是美~    j=j+1
 8ruby 简单就是美~  end
 9ruby 简单就是美~  print("\n")
10ruby 简单就是美~  i=i+1
11ruby 简单就是美~end

这里是输出:
ruby 简单就是美~1*1=1    
ruby 简单就是美~
1*2=2    2*2=4    
ruby 简单就是美~
1*3=3    2*3=6    3*3=9    
ruby 简单就是美~
1*4=4    2*4=8    3*4=12    4*4=16    
ruby 简单就是美~
1*5=5    2*5=10    3*5=15    4*5=20    5*5=25    
ruby 简单就是美~
1*6=6    2*6=12    3*6=18    4*6=24    5*6=30    6*6=36    
ruby 简单就是美~
1*7=7    2*7=14    3*7=21    4*7=28    5*7=35    6*7=42    7*7=49    
ruby 简单就是美~
1*8=8    2*8=16    3*8=24    4*8=32    5*8=40    6*8=48    7*8=56    8*8=64    
ruby 简单就是美~
1*9=9    2*9=18    3*9=27    4*9=36    5*9=45    6*9=54    7*9=63    8*9=72    9*9=81    

这段代码觉得写的太罗嗦了,不像是ruby的风格。于是改成下面的code:
1ruby 简单就是美~(1..9).each {|i| 
2ruby 简单就是美~    (1..i).each{|j| print "#{j}*#{i}=#{i*j}\t";} 
3ruby 简单就是美~    print("\n")
4ruby 简单就是美~ }

这样也行:
1ruby 简单就是美~1.upto(9) {|i| 
2ruby 简单就是美~    i.times {|j| print "#{j+1}*#{i}=#{i*(j+1)}\t"; }
3ruby 简单就是美~    print("\n")
4ruby 简单就是美~ }

是不是简单很多?

不过如果看了Programming Ruby中的例子,会有更深的印象:ruby好简单,好方便!!
这个例子是从一个歌曲list中根据序号或者名字来查找歌曲,下面是最初的做法,当然也是一般语言的通常做法:
 1ruby 简单就是美~class SongList
 2ruby 简单就是美~  def [](key)
 3ruby 简单就是美~    if key.kind_of?(Integer)
 4ruby 简单就是美~      return @songs[key]
 5ruby 简单就是美~    else
 6ruby 简单就是美~      for i in 0ruby 简单就是美~@songs.length
 7ruby 简单就是美~        return @songs[i] if key == @songs[i].name
 8ruby 简单就是美~      end
 9ruby 简单就是美~    end
10ruby 简单就是美~    return nil
11ruby 简单就是美~  end
12ruby 简单就是美~end
13ruby 简单就是美~
14ruby 简单就是美~

然后是第二种做法:循环被一个find方法所取代,更加方便简洁了
 1ruby 简单就是美~class SongList
 2ruby 简单就是美~  def [](key)
 3ruby 简单就是美~    if key.kind_of?(Integer)
 4ruby 简单就是美~      result = @songs[key]
 5ruby 简单就是美~    else
 6ruby 简单就是美~      result = @songs.find { |aSong| key == aSong.name }
 7ruby 简单就是美~    end
 8ruby 简单就是美~    return result
 9ruby 简单就是美~  end
10ruby 简单就是美~end
11ruby 简单就是美~
12ruby 简单就是美~
还有更简单的形式:
1ruby 简单就是美~class SongList
2ruby 简单就是美~  def [](key)
3ruby 简单就是美~    return @songs[keyif key.kind_of?(Integer)
4ruby 简单就是美~    return @songs.find { |aSong| aSong.name == key }
5ruby 简单就是美~  end
6ruby 简单就是美~end
7ruby 简单就是美~
8ruby 简单就是美~

从上面的例子来看,ruby是不是很方便,iterator的功能是不是很贴心?

对ruby的了解越多,越感到简单就是美!


相关文章:

  • 2021-06-26
  • 2021-12-19
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-08-29
  • 2021-06-27
猜你喜欢
  • 2021-12-21
  • 2022-01-07
  • 2021-09-18
  • 2021-11-22
  • 2021-05-29
  • 2021-12-24
  • 2021-07-07
相关资源
相似解决方案