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

上一篇 / 下一篇  2008-12-06 22:59:56 / 个人分类:Ruby

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


 

 

 


TAG: Ruby block 编程工具 迭代器

 

评分:0

我来说两句

Open Toolbar