首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > Ruby Rails >

为何要用block和lambda,而不是用方法调用来代替这二者

2013-01-02 
为什么要用block和lambda,而不是用方法调用来代替这二者在方法中调用block也是调用,在方法中调用另外一个

为什么要用block和lambda,而不是用方法调用来代替这二者
在方法中调用block也是调用,在方法中调用另外一个方法也是调用。感觉从语法的角度来讲,二者调用的方式没有任何本质区别,那么它为什么要设计一个调用block的语法,而不是让我们去调用另外一个方法呢?
类似地,为什么要用lambda呢?

这种东西出现,一定大有道理,一定是某种设计思路的需要或者什么的。我觉得它们是一回事,一定是我没有理解某个重要的东西。
请讲一讲
[解决办法]
看起来简洁,优雅。
[解决办法]
先说说block,
例子一,for循环,迭代访问一个集合
for (int i = 0; i < array.length; i++) {
  Object o = array[i];
}

array.each{
[解决办法]
o
[解决办法]
...}
两种写法,明显是后一种写法更简洁,还少了一个局部变量i,
我刚从java转ruby的时候,也很不习惯block,
但这是一个习惯问题,用惯了就好了,

例子二,file操作
file = File.new("testfile", "r")
begin
  # ... process the file
  file.close
rescue Exception
  file.close
end

File.open("testfile", "r") do 
[解决办法]
file
[解决办法]

# ... process the file
end
异常处理在block内部就完成了

明显是第二种写法更顺手吧,这个例子是programming ruby上的,记得不准确

lambda以后再说吧,刚项目经理布置任务了


[解决办法]
想用方法调用,你必须知道方法的名字;
block不用;

用方法调用你不能访问其他方法的局部变量,
用block可以。

。。。。。用多了就知道
[解决办法]

引用:
想用方法调用,你必须知道方法的名字;
 block不用;

 用方法调用你不能访问其他方法的局部变量,
 用block可以。

 。。。。。用多了就知道

 用方法调用你不能访问其他方法的局部变量,
 用block可以。

避免此用法,

热点排行