我应该在def中指定&阻止参数吗?

ma1*_*w28 3 ruby arguments coding-style function block

在Ruby中,指定方法是否需要更好(样式?)&block

只要方法体包含,选择似乎只是一种风格问题yield.

例如,给定:

def abc1(a, c)
  puts a
  yield
  puts c
end

def abc2(a, c, &block)
  puts a
  yield
  puts c
end
Run Code Online (Sandbox Code Playgroud)

以下两个电话:

abc1('a', 'c') { puts 'b' }
abc2('a', 'c') { puts 'b' }
Run Code Online (Sandbox Code Playgroud)

每个打印并返回相同的东西:

a
b
c
=> nil
Run Code Online (Sandbox Code Playgroud)

所以,如果它真的只是风格问题,那么常规(或更好的风格)是什么?

Aru*_*hit 5

使用当前的代码,第一个更好.当你正在使用时yield,不需要使用&block,因为它是隐含的.但是,是的,有一点要提醒,你必须在使用时传递一个块yield,如果没有那么就会出现错误.虽然可以使用该错误来处理block_given?.

Ruby的yield语句从方法体中控制用户指定的块.因此,如果您再次使用&block它是多余的,所以不需要使用它.