ruby 简单就是美~
2007-02-22 13:44
225 查看
早上在rubychina看到有人贴了一段99乘法表的一小段ruby代码。
1i=1
2while i<=9
3 j=1
4 while j<=i
5 s=j*i
6 print("#{j}*#{i}=#{s}\t")
7 j=j+1
8 end
9 print("\n")
10 i=i+1
11end
这里是输出:
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
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:
1(1..9).each {|i|
2 (1..i).each{|j| print "#{j}*#{i}=#{i*j}\t";}
3 print("\n")
4 }
这样也行:
11.upto(9) {|i|
2 i.times {|j| print "#{j+1}*#{i}=#{i*(j+1)}\t"; }
3 print("\n")
4 }
是不是简单很多?
不过如果看了Programming Ruby中的例子,会有更深的印象:ruby好简单,好方便!!
这个例子是从一个歌曲list中根据序号或者名字来查找歌曲,下面是最初的做法,当然也是一般语言的通常做法:
1class SongList
2 def [](key)
3 if key.kind_of?(Integer)
4 return @songs[key]
5 else
6 for i in 0@songs.length
7 return @songs[i] if key == @songs[i].name
8 end
9 end
10 return nil
11 end
12end
13
14
然后是第二种做法:循环被一个find方法所取代,更加方便简洁了
1class SongList
2 def [](key)
3 if key.kind_of?(Integer)
4 result = @songs[key]
5 else
6 result = @songs.find { |aSong| key == aSong.name }
7 end
8 return result
9 end
10end
11
12
还有更简单的形式:
1class SongList
2 def [](key)
3 return @songs[key] if key.kind_of?(Integer)
4 return @songs.find { |aSong| aSong.name == key }
5 end
6end
7
8
从上面的例子来看,ruby是不是很方便,iterator的功能是不是很贴心?
对ruby的了解越多,越感到简单就是美!
1i=1
2while i<=9
3 j=1
4 while j<=i
5 s=j*i
6 print("#{j}*#{i}=#{s}\t")
7 j=j+1
8 end
9 print("\n")
10 i=i+1
11end
这里是输出:
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
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:
1(1..9).each {|i|
2 (1..i).each{|j| print "#{j}*#{i}=#{i*j}\t";}
3 print("\n")
4 }
这样也行:
11.upto(9) {|i|
2 i.times {|j| print "#{j+1}*#{i}=#{i*(j+1)}\t"; }
3 print("\n")
4 }
是不是简单很多?
不过如果看了Programming Ruby中的例子,会有更深的印象:ruby好简单,好方便!!
这个例子是从一个歌曲list中根据序号或者名字来查找歌曲,下面是最初的做法,当然也是一般语言的通常做法:
1class SongList
2 def [](key)
3 if key.kind_of?(Integer)
4 return @songs[key]
5 else
6 for i in 0@songs.length
7 return @songs[i] if key == @songs[i].name
8 end
9 end
10 return nil
11 end
12end
13
14
然后是第二种做法:循环被一个find方法所取代,更加方便简洁了
1class SongList
2 def [](key)
3 if key.kind_of?(Integer)
4 result = @songs[key]
5 else
6 result = @songs.find { |aSong| key == aSong.name }
7 end
8 return result
9 end
10end
11
12
还有更简单的形式:
1class SongList
2 def [](key)
3 return @songs[key] if key.kind_of?(Integer)
4 return @songs.find { |aSong| aSong.name == key }
5 end
6end
7
8
从上面的例子来看,ruby是不是很方便,iterator的功能是不是很贴心?
对ruby的了解越多,越感到简单就是美!
相关文章推荐
- 简单有效的SEO,就是最好的SEO
- (转)当别人努力的时候,你在做什么? 评论事情的一种态度 当你在抱怨的时候,为什么不想想我做了什么? 把简单的原则坚持贯彻下去 消极的心态,养成了惯性的思维,一切都是不好的。 也许这就是人性的弱点,不经意的习惯,却逐渐腐蚀了你的人生。
- Jquery就是这么简单
- Ruby on Rails,创建一个最简单的站点。
- Ruby on Rails,创建最简单的视图/控制器单元Hello World
- 简单理解Class类就是用来操作.class文件
- 建立第一个spring boot ,就是这么简单
- 有时候,爱就是那么简单
- 随想:简单就是美 ------ 评软件实用主义
- SVN就是这么简单
- 就是这么简单(续)!使用 RestAssuredMockMvc 测试 Spring MVC Controllers
- Ubuntu 8.04 环境下Ruby on Rails 环境简单配置
- 《大话设计模式》之--第1章 代码无错就是优?----简单工厂模式
- 生活简单就是幸福
- ruby和python简单对比
- .Net精品视频教程推荐,.Net学习就是这么简单!
- 简单就是美
- 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZde
- 简单就是美--张小龙的产品的思路
- C#调用MD5算法就是这么简单!