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语法的详细解析: 1. 变量与常量 - 局部变量:以小写字母或下划线开头,如`var`或`_var`。 - 全局变量:以美元符号`$`开头,如`$var`。 - 类变量:在类中定义,以双`@`开头,如`@@var`。 - 实例...
这篇博文链接()可能详细解释了Ruby的基本语法和特性,但由于没有实际内容,我将根据常见的Ruby语法知识进行阐述。 1. **变量**: Ruby有四种类型的变量:局部变量(`local`)、实例变量(`instance`)、类变量(`...
### Ruby语言教程对Ruby语法的总结 #### 一、变量与数据类型 **特点:** - **动态类型:** Ruby是一种动态类型的语言,这意味着你无需为变量声明具体的数据类型。 - **变量命名规则:** 变量名必须以小写字母或...
#### 三、Ruby 程序结构 - **空白字符**: - 通常情况下,空格和制表符会被忽略。 - 当启用 `-w` 选项时,某些空白可能会产生警告。 - **例子**: - `a + b` 被解释为两个局部变量相加。 - `a +b` 被解释为调用...
以下是一些从书中的截图中可以提炼的重要Ruby语法知识点: 1. **变量** - `local变量`:以小写字母开头,如`x = 10`。 - `实例变量`:以`@`开头,如`@name = "John"`。 - `类变量`:以`@@`开头,用于整个类共享...
Ruby是一种面向对象的、动态类型的编程语言,以其简洁、优雅的语法和强大的元编程能力而闻名。本教程将深入探讨Ruby的基础语法,并介绍如何下载、安装Ruby,以及使用Ruby教程中文版进行学习。 首先,让我们从Ruby的...
### 前端学 Ruby:熟悉 Ruby 语法 #### Ruby 是什么? Ruby 是一种动态的、面向对象的脚本语言,由日本人松本行弘在 1995 年设计并开发。作为一种解释型语言,Ruby 具有简单易懂、功能强大且灵活的特点。Ruby 在 ...
### Ruby语法基础教程知识点概览 #### 一、Ruby语言概述 **1.1 Ruby的历史** - **创始人:** Ruby语言是由日本人松本行弘(Matz)在1995年开始开发的一种脚本语言。 - **发展背景:** 在Perl和Python流行的时代背景...
Ruby是一种面向对象的编程语言,以其简洁、优雅的语法著称。这个"Ruby基础语法视频教程1"涵盖了几个关键的概念,包括变量、变量规则以及表达式。以下是对这些主题的详细解释: 1. 变量(Variables): 在Ruby中,...
Ruby 以其简洁优雅的语法、强大的面向对象能力、丰富的标准库和活跃的社区支持,成为了 Web 开发和其他领域的重要选择之一。无论是初学者还是有经验的开发者,都可以通过学习 Ruby 来提升自己的技能水平。