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

 更新时间:2015年04月16日 09:51:23   投稿:junjie  
这篇文章主要介绍了Ruby基础知识之基本流程控制,本文讲解了条件判断、循环语句、迭代器和枚举三部分内容,需要的朋友可以参考下

(一)条件判断
条件判断为基本式:

复制代码 代码如下:

if expression
       code
end

表达式如果不是false或nil,则可执行code部分,所以对于else来说,如果为false或nil,则else下的代码是要执行的。要注意的是表达式与执行代码之间要有分界符:例如换行或分号或是then关键字。
多条件分支情况下,除了可以用else if之外,可以用省略式:elsif
复制代码 代码如下:

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非常灵活。

(二)循环

循环条件是while do或until do,而位于它们之间的是循环体。
现条件if相似,循环语句也可以用分界符的形式做紧凑循环,这时,省略了换行符和end。

复制代码 代码如下:

x=1
puts x,x+=1 while x<10
 
while x<20 do
  puts x
  x+=1
end

 
在C#中有for循环应用非常广泛,在ruby中,for循环与foreach的作用类似,用于对可枚举对象进行迭代。
复制代码 代码如下:

for var in collection do
       code
end

其中collection是带有each迭代方法的对象;do关键字可选(可以用换行符或分号替代)。
复制代码 代码如下:

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

(三)迭代器和枚举
除了循环控制while、for、until外,有种特殊的方法用于循环,也就是迭代器,它是ruby最重要的特性之一。
(1)数值迭代器
upto:为一个区间内的所有整数调用其关联的代码块。左边为起始,右边为结束。
downto:与upto相反。
times:调用关系的代码一定的次数,且把0到n-1传递给代码。
step:以一定的步长,迭代增加到指定数值。第二个参数为步长。

复制代码 代码如下:

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:求累积值迭代。通过两个参数调用关联代码块,第一个参数是前次调用代码块的累积值,第二个参数指调用进行迭代的下一个元素。如果有传递参数,则做为第一个参数的初始值,如果没有,则把第一次进行迭代的元素值做为初始值。
复制代码 代码如下:

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

相关文章

  • ruby实现github第三方认证

    ruby实现github第三方认证

    GitHub在用户认证过程中采用了双匙机制,在双匙加密机制中,只有合法用户才拥有私匙,只要GitHub在收到请求时可以证明提交请求的客户端上拥有该私匙,即可以确认该操作是由合法用户发起的。我们通过ruby来简单模拟下吧。
    2015-06-06
  • 在Ruby程序中连接数据库的详细教程

    在Ruby程序中连接数据库的详细教程

    这篇文章主要介绍了在Ruby程序中连接数据库的详细教程,包括介绍数据库支持Ruby的接口等,是学习Ruby on Rails的基础,需要的朋友可以参考下
    2015-04-04
  • 在Ruby on Rails上使用Redis Store的方法

    在Ruby on Rails上使用Redis Store的方法

    这篇文章主要介绍了在Ruby on Rails上使用Redis Store的方法,是Ruby程序和Redis数据库结合的有效途径,需要的朋友可以参考下
    2015-06-06
  • 在Docker中自动化部署Ruby on Rails的教程

    在Docker中自动化部署Ruby on Rails的教程

    这篇文章主要介绍了在Docker中部署Ruby on Rails的教程,Docker是当下最火的虚拟机,而本文所介绍的Ruby on Rails的部署则充分利用了Ruby中的rake这一炫酷的实现自动化的方法,需要的朋友可以参考下
    2015-06-06
  • Ruby中执行Linux shell命令的六种方法详解

    Ruby中执行Linux shell命令的六种方法详解

    这篇文章主要介绍了Ruby中执行Linux shell命令的六种方法详解,这些方法包括exec、system、反引号、IO、Open3、Open4等命令,需要的朋友可以参考下
    2015-01-01
  • Ruby中对一元操作符重载实例

    Ruby中对一元操作符重载实例

    这篇文章主要介绍了Ruby中对一元操作符重载实例,实例说明如何对一元操作符进行重载,需要的朋友可以参考下
    2014-06-06
  • ruby和pig处理流式文件实例

    ruby和pig处理流式文件实例

    这篇文章主要介绍了ruby和pig处理流式文件实例,本文讲解pig加载hdfs文件后调用ruby脚本处理数据,再返回数据流至pig中处理的一个简单案例,需要的朋友可以参考下
    2015-01-01
  • Ruby包管理器gem常用命令

    Ruby包管理器gem常用命令

    这篇文章主要介绍了Ruby包管理器gem常用命令,本文讲解了获取帮助、查询可用包、安装软件、查询已安装软件、卸载软件等常用命令,需要的朋友可以参考下
    2015-04-04
  • rudy 方法 分析

    rudy 方法 分析

    rudy 方法 分析...
    2007-11-11
  • Ruby使用C++扩展实例(含C++扩展代码示例)

    Ruby使用C++扩展实例(含C++扩展代码示例)

    这篇文章主要介绍了Ruby使用C++扩展实例,含C++扩展实现代码,本文可作为Ruby中使用C++扩展的入门教程,需要的朋友可以参考下
    2014-09-09

最新评论