ruby的方法和block

简介: 在ruby中方法与block的合用 :~/ruby$ irbirb(main):001:0> def take_block(p1)irb(main):002:1>   if block_given?irb(main):003:2>      yield(p1)irb(main):004:2>   ...

在ruby中方法与block的合用

:~/ruby$ irb
irb(main):001:0> def take_block(p1)
irb(main):002:1>   if block_given?
irb(main):003:2>      yield(p1)
irb(main):004:2>   else
irb(main):005:2*      p1
irb(main):006:2>   end
irb(main):007:1> end
=> nil
irb(main):008:0> take_block("no block")
=> "no block"
irb(main):009:0> take_block("no block") {|s| s.sub(/no /,'')}
=> "block"
irb(main):010:0>

 

下面是调用yield实现的简单迭代(回调)

irb(main):001:0> def three_times
irb(main):002:1>    yield
irb(main):003:1>    yield
irb(main):004:1>    yield
irb(main):005:1> end
=> nil
irb(main):006:0> three_times { puts "Hello"}
Hello
Hello
Hello
=> nil
irb(main):007:0>

 

注:

    Kernel.block_given?方法: 当某方法和block关联在一起时, Kernel.block_given?返回真,否则返回假





相关文章
|
Ruby
Ruby 教程 之 Ruby 方法 2
Ruby return 语句
228 0
|
C语言 C++ Ruby
|
Ruby
Ruby 教程 之 Ruby 方法 3
可变数量的参数
266 1
|
应用服务中间件 Apache nginx
深入探索研究Ruby CGI方法
【10月更文挑战第2天】
309 4
|
应用服务中间件 Apache nginx
探索研究Ruby CGI方法
【9月更文挑战第2天】
259 4
|
设计模式 缓存 测试技术
Ruby代理模式之谜:如何用简单的方法创建灵活的对象接口?
【8月更文挑战第31天】代理模式是一种设计模式,通过创建代理对象来控制对目标对象的访问,可在Ruby中通过Proc对象、模块混入等方式实现。本文介绍了代理模式的概念及其实现方法,并提供了缓存、验证和日志代理等应用场景的示例代码,帮助开发者更好地理解和运用这一模式,提升程序灵活性与健壮性。
249 0