为什么要用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可以。
。。。。。用多了就知道
[解决办法]