2

我可以:

'string'.gsub!(/something/) do
  ... complex replacement here ...
  'final result'
end

我想知道是否可以将do ... end块分配给变量并gsub!作为参数传入,以便我可以执行以下操作:

my_block_replacement_logic = {
  ... complex replacement here ...
  'final result'
}

然后调用gsub

this_string.gsub!(/something/, my_block_replacement_logic)
that_string.gsub!(/something/, my_block_replacement_logic)
4

1 回答 1

6

您可以在 proc 中定义您的行为并将其分配给变量。然后,您可以稍后通过在变量名gsub!前添加 a 来使用特殊语法将其传递给您。&

my_proc = proc do
  # ... complex replacement here ...
  'final result'
end

'string'.gsub!(/something/, &my_proc)
于 2013-09-11T14:09:41.967 回答