用Ruby开发总是令人赏心悦目的,它语法中无处不存在灵光一闪,让人很有一种乐趣。

迭代器的block,这是挺有意思的地方。

1 anArray.each do |ele|
2   p ele
3 end

这个不用介绍了吧,这是基础,这样的基础能衍生出下面的东西出来:

1 def method1(arg, &block)
2   arg.each do |a|
3     yield(a) if block
4   end
5 end
6 
7 method1 [1,2,3] do |b|
8   p b
9 end

上述玩意有什么效果?嗯,看官自己去试吧,讲解很费力。

在《The Ruby Way》介绍了另外的一种方法来调用Block:

1 def method2(x, &y)
2   instance_eval &if y
3   p x
4 end
5 
6 method2(2) { p 1 }

有人可能会觉得这玩意有什么用呢?主要是最近又在翻Ruby Agile Web Development,看到那个redirect的教程,可以传错误信息的那个方法。记得早前有几个朋友问过,Ruby的传参数如何诡异。。。。关于这个方法,调试了好多次,但传参数的模式总不合理。现在好了吧,用block,在跳转之前执行block的命令,你要干啥就干啥。这比之Javascript将一个function作为参数调用,又高明了许多。

posted on 2008-02-18 09:19  Janpoem  阅读(205)  评论(0编辑  收藏  举报