`

ruby学习笔记--循环结构

    博客分类:
  • ruby
阅读更多

一、循环结构

1.    for…in语句:

Ruby提供的for...in语句主要用于迭代数组和Hash对象中的元素,与其它语言的for

语句有一定的差距,语法格式:

       for val  in  Array | Hash | Range [do]

              #code

       End

----------------------------------------------------

迭代数组:

  for i in ['one','two','three'] do

      puts i

  end

迭代Hash对象:

       h = {1=>'aaa',2=>'bbb'}

      for i in h                                       

          puts i[0] .to_s + “ : ” +i[1].to_s

      end

 

OR

      for key,value in h                                          #指定多个循环变量

          puts key.to_s + ": "+ value.to_s

      end

------------------------------------------------------

另外,在Ruby中除了可以用for…in来迭代数组和Hash对象外,还可以用each方法来进行迭代:

   ['one','two','three'].each do |x|

puts x

   end

          ----------------------------------------

          {1=>'aaa',2=>'bbb'}.each do  |a,b|

                 puts a.to_s + ": " +b.to_s

         end 

Note:

1.       使用for…in语句时,每次只能取出一个数组元素,而不能一次取出多个。

2.       for循环的代码全在一行上时不能省略掉do,否则会报错只有当for循环的代码在多行上时才可以省略掉do;

 

2.       Blocks

Ruby中有两种定义块的方法:do…end {…}

#do…end

[‘1’,’2’,’3’].each do

        |a,b,c|

               Puts(‘#{a},#{b},#{c}’)

end

# 大括号 {..}

[[1,2,3],[3,4,5],[6,7,8]].each{

 |a,b,c|

puts( "#{a}, #{b}, #{c}" )

}

Note不管我们用哪种方式定义一个块,我们都必须确保’do’要和each关键字放在同一行上,否则会出现语法错误

 

3.       While语句:

这个和其它语言差别不大,没什么好说的,语法格式如下:

while condition [do]

        #code

end

       or   

       code while condition

 

在这要提一下的是上面的第二种定义,代码会先执行一次然后在进行判断。如果我们想用这种方式执行很多句代码,可以把它们放在beginend之间:

       begin

              code1

              code2

        end while condition

      

Note: 当一个块被在beginend之间时(如上),那么这段代码到少会执行一次,其它格式定义的while循环里面的代码可能执行0或多次;

       x=100

begin

            puts("x=#{x}")

end while(x<100)                        #outputx=100

puts ("-------------------")

y=100

puts("y=#{y}") while(y<100)              #无输出

 

4.       until语句

until语句与while语句作用正好相反,当条件表达式返回结果为时执行循环体,直到

条件表达式为true为止,语法格式:

until condition [do]

       #code

end

unitl语句的功能完全可以由wihle语句来实现,大多数其它语言中也没有until语句,感觉用起来容易出错,本人还是喜欢用while;

 

5.       Loop 语句

这是Ruby中提供的一个内建的最基本的迭代器,它可以执行循环功能,它会对指定代

码进行无限次的循环,除非使用break语句跳出循环,语法格式:

       loop{

       #code

}

Or

loop do

       #code

end

 

二、选择结构

1.       If…Then…Else/If……then(可以用冒号代替Then)

if x == 1 then puts( 'ok' ) end # with 'then'

if x == 1 : puts( 'ok' ) end # with colon

if x == 1 puts( 'ok' ) end # syntax error!代码在一行时不能省略then

 

 

2.       And…Or…Not/&&…||…!

Ruby中有两种方式来判定一个布尔表达式的值是true/false,但是这两种操作符不是完

全等价的,比如他们的计算优先级别就不一样,&&/||/!的优先级别要高些,所以一般用的时候尽量不要将这两种操作符混合起来用;

if 1==2 and 2==3 or (||)3==3

   puts('hello')  

end

Or

if 1==2 && 2==3 || 3==3

   puts('world')  

end

 

3.       Unless

该语句与if语句作用正好相反,当条件表达式返回结果为假时,计算then关键字后的代

码片段,与if语句不同的是,unless语句中不能使用elsif语句,因些不能处理多分支的程序流程,语法格式如下:

       unless  condition [then]

              #code1

       [else

#code2    ]

       end

 

 

4.       Case Statements

Ruby中,将case关键字后表达式的值与各个常量进行比较时,使用的是”===”比较运算符,这就是说when关键安后的常量可以是一个Range对象,此时只要case后的表达式的值在Range内,就可以执行相应的when后的代码片段了语法格式:

case [表达式]

[when 常量1 [,常量2] [,常量] then

        #code1

]

[when 常量1 [,常量2] [,常量] then

        #code2

]

[else

        #code3

]

end

case语句中,将case关键字后的表达式的值依次与when后的多个常量进行比较,一但相等,则执行对应的when语句块中的代码片段;

case(i)

        when 1: puts(“It’s Monday”)

        when 2: puts(“It’s Tuesday”)

        when 3: puts(“It’s Wednesday”)

       when 4: puts(“It’s Thursday”)

        when 5: puts(“It’s Friday”)

        when (6..7): puts(“It’s the weekend!”)

        else puts(“error”)

end 

OR

case(i)

        when 1

 puts(“It’s Monday”)

        when 2

puts(“It’s Tuesday”)

        when 3

puts(“It’s Wednesday”)

        when 4

puts(“It’s Thursday”)

        when 5

puts(“It’s Friday”)

        when (6..7)

puts(“It’s the weekend!”)

        else

puts(“error”)

end 

另外,当匹配成功后我们不需要为输入break语句来退出case语句,在Ruby中,一量匹配成功,case语句会自动跳出。

分享到:
评论

相关推荐

    个人ruby学习笔记

    从给定的文件信息中,我们可以提炼出一系列关于Ruby编程语言的重要知识点,涵盖基础语法、变量类型、数值操作、条件语句、循环结构以及字符串处理等核心领域。 ### Ruby基础语法 #### 注释 Ruby提供了两种注释方式...

    ruby语言入门教程-自学笔记

    Ruby支持多种控制结构,包括条件语句(if-else)、循环语句(for、while、until、each等)和异常处理(try-catch-finally)。 示例代码: ```ruby # 条件语句 num = 10 if num &gt; 10 puts "Number is greater than...

    ruby学习笔记

    根据提供的“ruby学习笔记”内容,我们可以从中提炼出多个重要的Ruby编程知识点,这些知识点对于初学者来说非常有用。下面将对这些知识点进行详细的解释与扩展。 ### 一、Ruby中的全局变量 Ruby提供了多个特殊变量...

    学习 Ruby 的笔记以及 Demo.zip

    在学习过程中,你将接触到控制结构(如if语句、循环)、类和对象的创建、模块的使用、异常处理、文件和IO操作等基础内容,也会了解到如何使用Gem(Ruby的包管理器)安装和管理外部库,以及如何调试和测试Ruby代码。...

    ruby笔记2ruby笔记2ruby笔记2

    "ruby笔记2ruby笔记2ruby笔记2"可能是指一系列关于Ruby学习的笔记,这些笔记可能涵盖了Ruby的基础概念、核心特性以及进阶话题。在Ruby的学习过程中,理解和掌握以下几个关键知识点至关重要: 1. **面向对象编程...

    ruby初学笔记ruby初学笔记

    4. **控制结构(Control Structures)**:包括条件语句(如`if...else`、`unless`)、循环(如`for`、`while`、`until`、`times`和`each`)、和异常处理(`begin...rescue...end`)等,这些是编写逻辑代码的基础。...

    ruby笔记3ruby笔记3ruby笔记3

    在Ruby笔记3中,我们将会深入探讨这个强大的语言的各个方面,包括基础语法、类与对象、模块、方法、控制结构、异常处理、文件操作以及一些高级特性。 首先,让我们从基础语法开始。Ruby中的变量分为四种类型:局部...

    Ruby知识点笔记

    以上只是Ruby基础知识的一部分,实际上Ruby还支持块、 proc 和 lambda,模块(module)实现代码复用和类别(class)定义对象结构,以及强大的元编程能力,使得Ruby成为一个强大而灵活的开发工具。学习并熟练掌握这些...

    ruby介绍及相应的ruby demo示意源码,供大家参考学习

    Ruby的控制结构,如if语句、while循环和case语句,与其他高级语言类似但更为灵活。例如,if语句可以直接比较对象,无需使用等于运算符。Ruby还支持块(block),这是一种代码片段,可以与方法一起使用,类似于其他...

    Groovy学习笔记

    ### Groovy学习笔记知识点梳理 #### 一、Groovy简介 - **概念**:Groovy是一种灵活的脚本语言,其设计初衷是为了更好地服务于Java开发者。它具备许多现代动态语言的特点,比如Python和Ruby,同时又能够无缝地与Java...

    Python 学习笔记 第三版1

    《Python 学习笔记 第三版1》是一本面向有一定Python编程基础的读者的书籍,旨在深入解析Python 3.6的语言特性。作者虽然已经具备一定的写作经验,但仍然谦虚地表示无法确保内容完全正确,同时满足所有人的需求。他...

    web敏捷开发rails笔记

    通过以上内容的学习,我们了解了Rails的基本环境搭建、应用创建、控制器与视图的关系、动态内容的展示方式以及敏捷开发的思想。Rails以其高效简洁的特点,成为了Web开发领域的重要工具之一。掌握Rails不仅能够提高...

    Ruby语法笔记

    这篇笔记将深入探讨Ruby的一些基础语法,包括变量、控制结构、类和对象、字符串操作以及循环。 首先,Ruby中的变量分为四种类型:全局变量(以`$`开头)、类变量(以`@@`开头)、方法变量(以`@`开头)和局部变量...

    Javascript学习笔记之 对象篇(四) : for in 循环

    首先,for in循环是一种在JavaScript中非常常用的操作对象属性的循环结构。它可以帮助我们遍历一个对象的所有可枚举属性,包括对象自身的属性以及从其原型链上继承的属性。这意味着,当你在使用for in循环遍历一个...

    scala的操作笔记

    Scala支持各种循环结构,包括`for`循环和`while`循环。其中,`for`循环支持更高级的迭代方式,例如模式匹配迭代。 ##### 4.6 调用方法和函数 Scala中的方法调用通常遵循传统的调用方式。而函数则是可以传递给其他...

    programming_language:编程语言学习笔记

    "programming_language:编程语言学习笔记"这一主题旨在整理和探讨各种编程语言的关键特性、语法结构以及在实际开发中的应用。 首先,编程语言可以分为几大类别,如低级语言(机器语言和汇编语言)和高级语言(如C,...

    dbc-deep-dives:我在 DevBootcamp 的深度学习课程中的材料

    通过 "dbc-deep-dives-master" 这个文件名,我们可以推测这个压缩包可能包含了整个课程的源码、笔记、课件和其他学习资源。为了充分利用这些材料,学生需要逐个研究每个文件,动手实践,理解并应用所学知识。如果能...

    W5D1

    2. **基础语法**:介绍变量、常量、数据类型(如整型、浮点型、字符串、数组、哈希等),条件语句(如 if/else、case)、循环结构(如 for、while、until、each)以及控制流(如 break、next)。 3. **函数与方法**...

    note:笔记

    控制结构是编程的基础,Ruby提供了if/else语句、case语句、循环(如while、for和until)以及块(block)来实现流程控制。块是通过`do..end`或花括号 `{}` 来定义的,可以与方法一起使用,例如`each`迭代器。 类和...

    阅读笔记:阅读笔记

    - 这个部分可能涵盖了编程语言的基本概念,如变量、数据类型、控制结构(条件语句、循环)、函数和对象。它可能还涉及到版本控制工具(如Git)的使用,以及基本的软件开发流程,包括需求分析、设计、编码、测试和...

Global site tag (gtag.js) - Google Analytics