博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

ruby 中block和迭代器的混合使用

Posted on 2010-04-06 13:23  Watir  阅读(206)  评论(0编辑  收藏  举报

Block是一种可以和方法调用相关联的代码块,有点象参数传 递

Block的表达方式:

1) {........}

  如:puts {"good morning,baoju"}

2) do .... end

如:

  do

puts "hello,jack"

puts "nice to meet you"

  end

一般来说只有一行那么使用{},如果有多行那么使用do...end

 Block与函数的关联

block 可以和方法的调用相关联,block可以写在方法的后面,如:

greet {puts "hi"}

如果函数有参数,那么block写在 参数的后面,如:

greet("jack","morning") {puts "hi"}

使用yield可以把调用block中的代码,如:

def greet
   puts "test block"
   yield
   yield
   puts "call block two times"
end

puts greet {puts "hi"}

那么输出为:

test block
hi
hi
call block two times
----------------------------------------------------------
可 以传递参数给对yield的调用,如:

def hell()
  yield('morning','hxr')
end

puts hell {|m,n| puts "good "+m+","+n}

那么输出为:

good morning,hxr

-------------------------------------

在 ruby中会经常使用block来实现迭代器,如

(1..3).each {|i| puts i}

输出为:

1
2
3