[2014年学习计划之RoR系列] 第二步 – 熟悉Ruby语言 (2/n) Blocks and Iterators (代码块和迭代器)...

[就算没有含金量,也请尊重原创, 转载自我的独立博客http://brucejia.net]

 

Blocks and Iterators (代码块和迭代器)

代码块和迭代器是Ruby语言中比较有特点的东西。先看代码块吧,如下面代码所示,代码块通常是由大括号({和}) 或者do/end包起来的一段代码。

   1: { puts "Hello" } # this is a block
   2: do ###
   3:     club.enroll(person) # and so is this
   4:     person.socialize #
   5: end ###

建议:单行的block用大括号;多行的block用do/end

 

blocks可以用来实现回调函数和迭代器。

   1: def call_block
   2:     puts "Start of method"
   3:     yield
   4:     yield
   5:     puts "End of method"
   6: end
   7:  
   8: call_block { puts "In the block" }

 

注意代码中的yield关键字。上边的代码产生结果如下:

Start of method
In the block
In the block
End of method

yield会调用跟方法(method)相关联的block,可以调用一次或多次。

当然block也可以带有自己的参数

   1: call_block {|str, num| ... }

调用的时候将参数传入给yield就好了。 - 这个时候yield看起来像个函数了。

   1: def call_block
   2:     yield("hello", 99)
   3: end

动手试试看这两行代码会输出什么。

   1: animals = %w( ant bee cat dog elk ) # create an array
   2: animals.each {|animal| puts animal } # iterate over the contents

转载于:https://www.cnblogs.com/brucejia/p/ruby-blocks-iterators.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值