`

Ruby Blocks

阅读更多

 

Ruby Blocks

 

 

Block构成

A block consists of chunks of code.

You assign a name to a block.

The code in the block is always enclosed within braces ({}).

A block is always invoked from a function with the same name as that of the block. This means that if you have a block with the nametest, then you use the function?test?to invoke this block.

You invoke a block by using the?yield?statement.

 

语法:

block_name{

  statement1

  statement2

  ..........

}

 

Here you will learn to invoke a block by using a simple?yield?statement. You will also learn to use a?yield?statement with parameters for invoking a block. You will check the sample code with both types of?yield?statements.

使用yield调用代码块

 

yield语句 无参数

#!/usr/bin/ruby

def test

  puts "You are in the method"

  yield

  puts "You are again back to the method"

  yield

end

test {puts "You are in the block"}

 

结果

You are in the method

You are in the block

You are again back to the method

You are in the block

 

 

有参数

#!/usr/bin/ruby

def test

  yield 5

  puts "You are in the method test"

  yield 100

end

test {|i| puts "You are in the block #{i}"}

 

结果

You are in the block 5

You are in the method test

You are in the block 100

 

在Block块中,使用两个竖线来表示接收的参数

test {|i| puts "You are in the block #{i}"}

如果接收多个参数

test {|a, b| statement}

 

Blocks and Methods:

 

块与方法

def test

 yield

end

test{ puts "Hello world"}

 

block作为参数,使用"&"符号,被当作一个Proc对象来处理,利用自身的call方法来进行调用 

def test(&block)

  block.call

end

test { puts "Hello World!"}

结果

Hello World!

 

 

BEGIN and END Blocks

 

BEGIN Blocks

一般置于文件开始位置,优于其它代码先执行,不受制于程序的逻辑运行。

 

END Blocks

程序结束时运行,END块受制于程序的逻辑运行。

 

多个BEGIN Blocks时,按声明顺序执行

多个END Blocks时,正好相反



Ref:

Ruby Blocks

http://www.tutorialspoint.com/ruby/ruby_blocks.htm

 

分享到:
评论

相关推荐

    swagger-blocks, 定义和服务 ruby 应用程序的动态更新 Swagger.zip

    swagger-blocks, 定义和服务 ruby 应用程序的动态更新 Swagger Swagger::Blocks Swagger::Blocks 是一个用于纯 ruby 代码块的DSL,可以转换为 JSON 。它帮助你以 Swagger 风格编写API文档,然后自动构建与 Swagger ...

    笨办法学ruby_笨办法学ruby_ruby_bravevk4_

    Ruby的块(blocks)和 Proc 对象是其独特之处,它们提供了简洁的回调函数和迭代器。书中会深入解释这些概念,并通过实例展示它们在实际编程中的应用。Ruby还支持闭包,这是一种强大的工具,可以捕获和存储当前环境的...

    hw-ruby-intro.zip_SaaS软件工程_hw-ruby-intro_ruby _ruby 中文_saas

    Ruby的特色包括块(blocks)、闭包(closures)、元类(metaclasses)以及模块(modules),这些特性使得代码可读性高,同时也提供了高度的灵活性。 2. **SaaS软件工程**:SaaS是一种软件交付模式,用户通过互联网...

    Programming ruby.pdf

    在函数式编程方面,Ruby支持块(blocks)和Proc对象,它们可以捕获代码块并在需要时执行,这在处理迭代和回调函数时非常有用。Lambda表达式提供了一种更严格的块定义方式,类似于函数,这在编写函数式风格的代码时...

    《Ruby Programming—向Ruby之父学程序设计(第2版)》电子书

    同时,书中也会介绍Ruby的块(blocks)、Proc对象和Lambda,这些都是Ruby中处理代码块的独特方式。 在函数式编程方面,Ruby也提供了一些支持,如闭包和高阶函数。这些特性可以帮助程序员写出更简洁、更可读的代码。...

    ruby中文手册 chm

    通过这个中文手册,开发者不仅可以学习到Ruby的基本语法,还可以了解到更高级的主题,如元编程、闭包、 Blocks、Proc对象和Symbol,以及如何利用Ruby的灵活性来创建高效、简洁的代码。同时,了解RGSS可以让开发者...

    Best of Ruby Quiz

    3. **块(Blocks)和 Proc**:Ruby中的块是代码段,可以通过do..end或花括号{}来定义,Proc是块的可存储形式。书中会介绍如何使用块和Proc进行函数式编程。 4. **闭包和Lambda**:Ruby的Proc和Lambda可以实现闭包,...

    Ruby 简介及安装 视频教程

    4. **Ruby中的块和 Proc**:掌握Ruby中的块(blocks)和Proc对象,以及它们在迭代器和闭包中的应用。 5. **Gem生态系统**:了解Ruby的包管理工具Gem,如何通过Gem来安装和管理第三方库,以及Gemfile的使用。 6. **...

    Beginning.Ruby.From.Novice.to.Professional.3rd.Edition.1484212797

    Chapter 3: Ruby’s Building Blocks: Data, Expressions, and Flow Control Chapter 4: Developing Your First Ruby Application Chapter 5: The Ruby Ecosystem Part 2: The Core of Ruby Chapter 6: Classes, ...

    Head First Ruby.pdf

    You'll enter at Ruby's language basics and work through progressively advanced Ruby features such as classes, inheritance, and blocks. As your Ruby skills grow, you'll tackle deep topics such as ...

    ruby 2.3.1 windows64位安装包

    - **Numbered Parameters in Blocks**:允许在块中使用数字参数,使代码更简洁。 - **String#unpack1**:新的方法,可以从二进制字符串中提取单个元素。 - **Integer#digits**:返回一个数组,包含整数的二进制、八...

    ruby.rar

    1. **块(Blocks)**:Ruby的块是代码的可重用部分,通常与迭代器一起使用。块可以用`{}`或`do..end`定义,它们可以传递给方法,并在需要的地方执行。 2. ** Proc 和 Lambda**:它们是闭包,可以保存和传递代码。...

    Ruby v2.6.3 正式版

    3. **块、 proc 和 lambda**:Ruby支持块(blocks),这是一种内联定义的代码段,可以通过`do..end`或花括号`{}`来定义。Proc和Lambda是可存储的代码块,它们可以作为参数传递,返回值,或者用作其他函数。 4. **...

    The Ruby Programming Language 介绍

    5. 函数式编程元素:虽然主要是一种面向对象的语言,但Ruby也包含了一些函数式编程的概念,如块(Blocks)、 Proc 对象和 Lambda。 6. 高级错误处理:Ruby提供了丰富的异常处理结构,通过 `begin-rescue-end` 块...

    ruby 1.8.5 .tgz

    3. **块和闭包**:Ruby 支持块(Blocks),这是类似匿名函数的概念,可以作为参数传递给方法。块可以转换为闭包,保持对外部作用域的引用,这对于迭代和回调函数非常有用。 4. **元编程**:Ruby 提供了强大的元编程...

    unicode-blocks:Ruby 字符串的 Unicode 块

    可能仍然有效的旧Ruby: 2.4 、 2.3 、 2.2 、 2.1 、 2.0 文件 gem "unicode-blocks" 用法 require "unicode/blocks" # All blocks of a string Unicode :: Blocks . blocks ( "Abc" ) # => ["Basic Latin"] ...

    ruby笔记1ruby笔记1ruby笔记1

    这些疑问可能涉及到Ruby的面向对象特性、元编程、块(blocks)、proc和lambda等高级特性。 综合以上分析,我们可以期待这份压缩包内的笔记涵盖了Ruby的基础知识,如变量、数据类型、控制结构,以及进阶主题,如类和...

Global site tag (gtag.js) - Google Analytics