相关疑难解决方法(0)

屈服于一个匿名的块

我没有理解以下行为(另请参见此SO线程):

def def_test
  puts 'def_test.in'
  yield if block_given?
  puts 'def_test.out'
end

def_test do
  puts 'def_test ok'
end

block_test = proc do |&block|
  puts 'block_test.in'
  block.call if block
  puts 'block_test.out'
end

block_test.call do
  puts 'block_test'
end

proc_test = proc do
  puts 'proc_test.in'
  yield if block_given?
  puts 'proc_test.out'
end

proc_test.call do
  puts 'proc_test ok'
end
Run Code Online (Sandbox Code Playgroud)

输出:

def_test.in
def_test ok
def_test.out
block_test.in
block_test ok
block_test.out
proc_test.in
proc_test.out
Run Code Online (Sandbox Code Playgroud)

我不介意明确地声明&block变量并直接调用它,但我更理想地想了解为什么我最终需要它.

ruby

5
推荐指数
2
解决办法
763
查看次数

标签 统计

ruby ×1