我可以使用“gsub!”作为变量传入块吗?

时间:2013-09-11 14:03:06

标签: ruby-on-rails ruby

我能做到:

'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)

1 个答案:

答案 0 :(得分:6)

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

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

'string'.gsub!(/something/, &my_proc)