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

时间: 2024-10-26 16:58:27

Ruby基础知识之基本流程控制_ruby专题的相关文章

MS SQL基础教程:SQL流程控制命令

Transact-SQL 语言使用的流程控制命令与常见的程序设计语言类似主要有以下几种控制命令. 4.6.1 IF-ELSE 其语法如下: IF <条件表达式> <命令行或程序块> [ELSE [条件表达式] <命令行或程序块>] 其中<条件表达式>可以是各种表达式的组合,但表达式的值必须是逻辑值"真"或"假".ELSE子句是可选的,最简单的IF语句没有ELSE子句部分.IF-ELSE用来判断当某一条件成立时执行某段程

MSSQL基础教程之SQL流程控制命令

Transact-SQL 语言使用的流程控制命令与常见的程序设计语言类似主要有以下几种控制命令. 4.6.1 IF-ELSE 其语法如下: IF <条件表达式> <命令行或程序块> [ELSE [条件表达式] <命令行或程序块>] 其中<条件表达式>可以是各种表达式的组合,但表达式的值必须是逻辑值"真"或"假".ELSE子句是可选的,最简单的IF语句没有ELSE子句部分.IF-ELSE用来判断当某一条件成立时执行某段程

Ruby的语法和语言特性总结_ruby专题

Ruby是一种解释型.面向对象.动态类型的语言.Ruby采取的策略是在灵活性和运行时安全之间寻找平衡点.随着Rails框架的出现,Ruby也在2006年前后一鸣惊人,同时也指引人们重新找回编程乐趣.尽管从执行速度上说,Ruby谈不上有多高效,但它却能让程序员的编程效率大幅提高.本文将讲述Ruby语言的基础语言特性,包括基本的语法及代码块和类的定义. 1. 基础在Ruby交互命令行中输入以下命令(>>为命令行提示符,=>为返回值:下文将把=>符号和语句写在一行内表明其返回值): &g

深入理解Ruby中的代码块block特性_ruby专题

block是什么? 在Ruby中,block并不罕见.官方对block的定义是"一段被包裹着的代码".当然,我觉得这样的解释不会让你变的更明白. 对block的一种更简单的描述是"一个block就是一段存储在一个变量中的代码,它和其他的对象一样,可以被随时的运行" 然后,咱们通过看一些代码,之后再把这些代码重构成Ruby中的block形式.通过代码来实际的感受,更加直观. 比如,对两个数做加法? puts 5 + 6 # => 11 嗯,这样写是可以的.但是,

Java核心技术卷I基础知识3.8 控制流程

3.8 控制流程 与任何程序设计语言一样,Java使用条件语句和循环结构确定控制流程.本节先讨论条件语句,然后讨论循 环语句,最后介绍看似有些笨重的switch语句,当需要对某个表达式的多个值进行检测时,可以使用switch 语句.       C++注释:Java的控制流程结构与C和C++的控制流程结构一样,只有很少的例外情况.没有goto语 句,但break语句可以带标签,可以利用它实现从内层循环跳出的目的(这种情况C语言采用goto语句实 现).另外,还有一种变形的for循环,在C或C++

Ruby基础知识之方法、代码段_ruby专题

Ruby中的方法是一个有名称的代码块,是与一个或多个对象关联的参数化的代码.调用时须给出方法名,接收者(所在对象),参数值,且最后一个表达式的值做为返回值.与Ruby方法相似的是代码块,它没有名字,且调用时只通过迭代器或被间接调用.  (一)方法 (1)定义方法 定义方法就是 复制代码 代码如下: def 方法名(参数列表) 方法体 end 最后一个表达式做为返回值返回,如果有值,则返回:无值则返回nil.可以省略return. 在类中定义的方法为实例方法,实例方法可以在类的实例对象上使用.如果

Ruby基础知识之类_ruby专题

创建类: class后跟类名,其中类名的首字母必须要大写.实例化时,通过new方法实例化.在c#中有构造器,构造器与类同名.在ruby中,构造器为initialize方法.当通过new方法实例化一个类对象后,会自动调用initialize方法,把new中的参数传递给initialize方法进行初始化.在c#中的域,在ruby中称为实例变量,定义时前边加@前缀,表示是一个实例变量. 复制代码 代码如下: class Customer     def initialize(name,age)    

Ruby基础知识之数据类型_ruby专题

一.数值类型 (1)整型整型分两种,如果在31位以内(四字节),那为Fixnum实例.如果超过,即为Bignum实例. 复制代码 代码如下: #整型 Integer 以下是一些整型字面量 #字面量(literal):代码中能见到的值,数值,bool值,字符串等都叫字面量 #如以下的0,1_000_000,0xa等 a1=0 #带千分符的整型 a2=1_000_000 #其它进制的表示 a3=0xa puts a1,a2 puts a3 #puts print 都是向控制台打印字符,其中puts带

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

本章节将向您讲解如何使用 Ruby 访问数据库.Ruby DBI 模块为 Ruby 脚本提供了类似于 Perl DBI 模块的独立于数据库的接口. DBI 即 Database independent interface,代表了 Ruby 独立于数据库的接口.DBI 在 Ruby 代码与底层数据库之间提供了一个抽象层,允许您简单地实现数据库切换.它定义了一系列方法.变量和规范,提供了一个独立于数据库的一致的数据库接口. DBI 可与下列进行交互:     ADO (ActiveX Data Ob