源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Ruby基础知识之基本流程控制

  • 时间:2022-12-30 10:20 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Ruby基础知识之基本流程控制
[b](一)条件判断 [/b]条件判断为基本式:
[u]复制代码[/u] 代码如下:
if expression        code end
表达式如果不是false或nil,则可执行code部分,所以对于else来说,如果为false或nil,则else下的代码是要执行的。要注意的是表达式与执行代码之间要有分界符:例如换行或分号或是then关键字。 多条件分支情况下,除了可以用else if之外,可以用省略式:elsif
[u]复制代码[/u] 代码如下:
if expression1        code1 elsif expression2        code2 else        code3 end
如果通过then做为分界符: if expression then code end,那么可以把if直接做为分界符:code if expression,这时,if称为表达式修饰符。先写执行再写执行条件。要注意的是:如果成为表达式修饰符,则执行代码与if之间不能带换行符。虽然这种方式也是一种条件句,但我觉得它更像一种修饰。 对于if判断来说,它可以返回执行代码后的值。 与if条件类似,还有unless判断,它和if相反。 在C#中,多分支语句有个switch case开关,在ruby中,则是case when。case when非常灵活。 [b](二)循环[/b] 循环条件是while do或until do,而位于它们之间的是循环体。 现条件if相似,循环语句也可以用分界符的形式做紧凑循环,这时,省略了换行符和end。
[u]复制代码[/u] 代码如下:
x=1 puts x,x+=1 while x<10   while x<20 do   puts x   x+=1 end
  在C#中有for循环应用非常广泛,在ruby中,for循环与foreach的作用类似,用于对可枚举对象进行迭代。
[u]复制代码[/u] 代码如下:
for var in collection do        code end
其中collection是带有each迭代方法的对象;do关键字可选(可以用换行符或分号替代)。
[u]复制代码[/u] 代码如下:
arr=%w[1 2 3 4 5 6] for item in arr   print item<<" " end   hash1={:a=>1,:b=>2,:c=>3} for key,value in hash1   print "#{key}=#{value}"<<" " end
[b](三)迭代器和枚举 [/b]除了循环控制while、for、until外,有种特殊的方法用于循环,也就是迭代器,它是ruby最重要的特性之一。 (1)数值迭代器 upto:为一个区间内的所有整数调用其关联的代码块。左边为起始,右边为结束。 downto:与upto相反。 times:调用关系的代码一定的次数,且把0到n-1传递给代码。 step:以一定的步长,迭代增加到指定数值。第二个参数为步长。
[u]复制代码[/u] 代码如下:
1.upto(5){|x|print "#{x} "} puts 5.downto(1){|x|print "#{x} "} puts 3.times{|x|print "#{x} "} puts 3.step(5,0.5){|x|print "#{x} "}  
(2)枚举迭代器 each:将迭代元素传递给代码。 collect:为调用它的枚举的每个元素执行关联代码后,组合到一起做为一个数组返回。 select:为调用它的枚举的每个元素执行关联代码后,如果为真,组合到一起做为一个数组返回。 reject:与select相反。它把为false或nil的元素做为一个数据返回。 inject:求累积值迭代。通过两个参数调用关联代码块,第一个参数是前次调用代码块的累积值,第二个参数指调用进行迭代的下一个元素。如果有传递参数,则做为第一个参数的初始值,如果没有,则把第一次进行迭代的元素值做为初始值。
[u]复制代码[/u] 代码如下:
a1=[1,2,3] a2=a1.map{|x| x+1} a3=a2.collect{|x| x+1} print a2,a3   #o偶数 a5=a1.select{|x|x%2==0} print a5   a6=a1.reject{|x|x%2==0} print a6 puts a7=a1.inject{|sum,x|x+sum} puts a7 a8=a1.inject(10){|sum,x|x+sum} puts a8
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部