我有一个关于Block的问题,这两个代码是否相同?
代码1
File::open('yozloy.txt','w') do |f|
f << 'Some contains'
end
Run Code Online (Sandbox Code Playgroud)
代码2
newFile = File::open('yozloy.txt','w')
newFile << 'Some contains'
Run Code Online (Sandbox Code Playgroud)
Ars*_*en7 27
DarkDust已经说过这些方法不同了.我会向你解释一下这些块,我想我可以猜到你为什么问这个问题;-)
ruby中的块只是某种方法的参数.这不仅仅是一种不同的语法.
接受(可选)块的方法通常具有测试是否已使用块调用或不调用块的条件.
考虑这个非常简单的示例:(真正的File.open类似,但它确保文件关闭,即使您的块引发错误,例如)
def open(fname)
self.do_open(fname)
if block_given?
yield(self) # This will 'run' the block with given parameter
self.close
else
return self # This will just return some value
end
end
Run Code Online (Sandbox Code Playgroud)
通常,每个方法对于块或没有块可以以不同方式工作(工作).应始终在方法文档中说明.
| 归档时间: |
|
| 查看次数: |
8096 次 |
| 最近记录: |