当前位置: 首页 > 编程笔记 >

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

谢骏奇
2023-03-14
本文向大家介绍Ruby基础知识之基本流程控制,包括了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基础知识之类,包括了Ruby基础知识之类的使用技巧和注意事项,需要的朋友参考一下 创建类: class后跟类名,其中类名的首字母必须要大写。实例化时,通过new方法实例化。在c#中有构造器,构造器与类同名。在ruby中,构造器为initialize方法。当通过new方法实例化一个类对象后,会自动调用initialize方法,把new中的参数传递给initialize方法进行初

  • 本文向大家介绍Ruby基础知识之数据类型,包括了Ruby基础知识之数据类型的使用技巧和注意事项,需要的朋友参考一下 一、数值类型 (1)整型 整型分两种,如果在31位以内(四字节),那为Fixnum实例。如果超过,即为Bignum实例。 (2)浮点型 浮点有个圆整错误,例如:0.4-0.3==0.1 这是不等的。C#中也是如此(采用IEEE-754浮点的都是如此)。因为很多浮点数是用一种近似值来表

  • Tabris.js app的UI界面用原生控件构成,并用JavaScript对象来描述。有各种不同的控件可以使用,比如Button、TextView 或 ScrollView。每个控件类都是Widget的子类, Widget类提供了共通方法来获取属性、设置属性、事件监听以及向父控件添加控件。大多数方法都返回控件本身,便于链式调用。 创建原生控件 每个控件类都接受一个具有初始值的对象来创建原生控件。

  • 本文向大家介绍ADO.NET编程之基础知识,包括了ADO.NET编程之基础知识的使用技巧和注意事项,需要的朋友参考一下 一.ADO.NET基础 程序和数据库交互,要通过ADO.NET进行;通过ADO.NET就能在数据库中执行SQL了。ADO.NET中提供了对不同数据库的统一操作接口(ODBC)。另外还有一种操作数据库的接口是JDBC。 ADO.NET中通过SqlConnection类创建到SQL

  • 本文向大家介绍Ruby基础知识之方法、代码段,包括了Ruby基础知识之方法、代码段的使用技巧和注意事项,需要的朋友参考一下 Ruby中的方法是一个有名称的代码块,是与一个或多个对象关联的参数化的代码。调用时须给出方法名,接收者(所在对象),参数值,且最后一个表达式的值做为返回值。与Ruby方法相似的是代码块,它没有名字,且调用时只通过迭代器或被间接调用。   (一)方法 (1)定义方法 定义方法就

  • 创建一个易应用程序只需要短短几分钟的时间 - 通过在设计窗口上“绘制”诸如编辑框和按钮等组件来创建用户界面。然后,为窗口和组件设置属性以规定诸如标题、位置、尺寸等的值。最后,编写处理程序将生命真正赋于程序。 组件及事件驱动   组件及其事件驱动是使用易语言在 Windows 环境下编程的基础知识。所谓“组件”,即用作组成用户图形界面的基本成员,譬如:窗口、编辑框、图片框等等。组件按可否容纳其它组件