我能做到:
'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)
答案 0 :(得分:6)
您可以在proc中定义行为并将其分配给变量。然后,您可以稍后将gsub!
添加到变量名称,使用特殊语法将其传递给&
。
my_proc = proc do
# ... complex replacement here ...
'final result'
end
'string'.gsub!(/something/, &my_proc)