为什么要用block和lambda,而不是用方法调用来代替这二者,该如何处理

为什么要用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可以。

。。。。。用多了就知道