gpt4 book ai didi

ruby - 我如何重构这段 Ruby 代码以消除重复?

转载 作者:太空宇宙 更新时间:2023-11-03 17:19:48 25 4
gpt4 key购买 nike

我没有这样的问题,但我对 Ruby 还很陌生。我在一个方法中有以下 3 个可重复的代码位,我想知道真正的 Rubyist 如何首先删除重复,其次使其更可重用。

这里是有问题的代码:

file = File.new( destination)
doc = REXML::Document.new file

doc.elements.each("configuration/continuity2/plans") do |element|
element.attributes["storebasedir"] = "#{TEST_OUTPUT_DIRECTORY}"
end

doc.elements.each("configuration/add").each do |database|
database.raw_attributes = database.attributes.merge("connectionstring" => "#{TEST_CONNECTION_STRING}")
end

doc.elements.each("configuration/connectionStrings/plans") do |connectionString|
connectionString.raw_attributes = connectionString.attributes.merge("connectionString" => "#{TEST_CONNECTION_STRING}")
end

感谢任何建议。

最佳答案

最后两个 block 可以替换为

["add", "connectionStrings/plans"].each do |elt_name|
doc.elements.each("configuration/#{elt_name}").do |elt|
elt.raw_attributes = elt.attributes.merge("connectionString" => "#{TEST_CONNECTION_STRING}")
end
end

我假设“connectionstring”和“connectionString”之间的大小写差异是偶然的。如果是这样,那就恰恰说明了消除重复的好处。

此外,您可以将 "#{TEST_CONNECTION_STRING}" 替换为 TEST_CONNECTION_STRING

关于ruby - 我如何重构这段 Ruby 代码以消除重复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/380403/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com