`
酷的飞上天空
  • 浏览: 521861 次
  • 性别: Icon_minigender_1
  • 来自: 无锡
社区版块
存档分类
最新评论

ruby语法三

阅读更多

ruby中的代码块

代码块可以看作是一个没有名字的方法,他本身也是一个对象,一个Proc类的实例

匿名的代码块又两种创建方式

一种使用花括号包围的方式,

 
{puts "hello"}

 另一种是do和end关键字

do
  puts "hello"
end

  代码块创建以后就可以将它与方法调用相关联,在方法中可以使用yield回调该代码块

如:

def test_function
 puts "代码块开始"
yield
 puts "代码快结束"
end
test_function{puts "hello"}
test_function do
 puts"this is do and end !"
end

 输出:

代码块开始
hello
代码快结束
代码块开始
this is do and end !
代码快结束

 

代码块接收参数的定义如下:

{|x| puts x}
do |x,y|
puts x+y
end

 回调时为

yield 1
yield (1,2)

 完整例子如下:

def test_function(arg)
 yield arg
end
test_function("hello"){|x| puts x}
#输出 hello

迭代在ruby库中很多都使用了代码块

下面实现一个Array的each功能

class Array
def my_each
#遍历数组
  for i in(0..self.length-1)
  #将数组中的元素逐个传入代码块进行迭代
    yield self[i]
 end
 end
end
[1,2,3,4].my_each{|x| puts x}

 代码块的创建还可以通过Proc和lambda创建

通过lambda创建的代码块不会因代码块中含有return而返回,这是与Proc的一个区别

def proc_test
 f = proc { return "从Proc代码中直接跳出"  }
f.call
  return "proc_test正常退出"
end
def lambda_test
  f = lambda {return "从lambda代码中直接跳出"  } 
  f.call
  return "lambda_test正常退出"
end
puts proc_test
puts lambda_test

 输出

从Proc代码中直接跳出
lambda_test正常退出
 

异常处理

结构如下

begin
#正常执行的代码
rescue Exception1
 #处理Exception1类型的异常
rescue Exception2
 #处理Exception2类型的异常
rescue =>err
 #处理其他类型的异常
ensure
 #最后总是被执行的代码,类似于java中的finally方法
end

 例子:

x=10
y=0
begin
 puts x/y
rescue ZeroDivisionError
y=2
retry #retry用于重复整个迭代周期
ensure
  puts "总是被执行"
end
分享到:
评论

相关推荐

    ruby语法自整理

    下面是对Ruby语法的详细解析: 1. 变量与常量 - 局部变量:以小写字母或下划线开头,如`var`或`_var`。 - 全局变量:以美元符号`$`开头,如`$var`。 - 类变量:在类中定义,以双`@`开头,如`@@var`。 - 实例...

    ruby语法

    这篇博文链接()可能详细解释了Ruby的基本语法和特性,但由于没有实际内容,我将根据常见的Ruby语法知识进行阐述。 1. **变量**: Ruby有四种类型的变量:局部变量(`local`)、实例变量(`instance`)、类变量(`...

    Ruby语言教程对Ruby语法的总结展示Ruby语法的基本概念和用法.docx

    ### Ruby语言教程对Ruby语法的总结 #### 一、变量与数据类型 **特点:** - **动态类型:** Ruby是一种动态类型的语言,这意味着你无需为变量声明具体的数据类型。 - **变量命名规则:** 变量名必须以小写字母或...

    09Ruby 语法.docx

    #### 三、Ruby 程序结构 - **空白字符**: - 通常情况下,空格和制表符会被忽略。 - 当启用 `-w` 选项时,某些空白可能会产生警告。 - **例子**: - `a + b` 被解释为两个局部变量相加。 - `a +b` 被解释为调用...

    Prorammer ruby 语法截图

    以下是一些从书中的截图中可以提炼的重要Ruby语法知识点: 1. **变量** - `local变量`:以小写字母开头,如`x = 10`。 - `实例变量`:以`@`开头,如`@name = "John"`。 - `类变量`:以`@@`开头,用于整个类共享...

    ruby语法基础教程及Ruby教程中文版和安装文件

    Ruby是一种面向对象的、动态类型的编程语言,以其简洁、优雅的语法和强大的元编程能力而闻名。本教程将深入探讨Ruby的基础语法,并介绍如何下载、安装Ruby,以及使用Ruby教程中文版进行学习。 首先,让我们从Ruby的...

    前端学 Ruby:熟悉 Ruby 语法.pdf

    ### 前端学 Ruby:熟悉 Ruby 语法 #### Ruby 是什么? Ruby 是一种动态的、面向对象的脚本语言,由日本人松本行弘在 1995 年设计并开发。作为一种解释型语言,Ruby 具有简单易懂、功能强大且灵活的特点。Ruby 在 ...

    ruby语法基础教程.pdf

    ### Ruby语法基础教程知识点概览 #### 一、Ruby语言概述 **1.1 Ruby的历史** - **创始人:** Ruby语言是由日本人松本行弘(Matz)在1995年开始开发的一种脚本语言。 - **发展背景:** 在Perl和Python流行的时代背景...

    Ruby 基础语法 视频教程1

    Ruby是一种面向对象的编程语言,以其简洁、优雅的语法著称。这个"Ruby基础语法视频教程1"涵盖了几个关键的概念,包括变量、变量规则以及表达式。以下是对这些主题的详细解释: 1. 变量(Variables): 在Ruby中,...

    Ruby 语法. Ruby 是一种开源的面向对象程序设计的服务器端脚本语言

    Ruby 以其简洁优雅的语法、强大的面向对象能力、丰富的标准库和活跃的社区支持,成为了 Web 开发和其他领域的重要选择之一。无论是初学者还是有经验的开发者,都可以通过学习 Ruby 来提升自己的技能水平。

Global site tag (gtag.js) - Google Analytics