我有一个方法
def welcome(*args)
#....some code
end
根据情况我有时不得不调用这个方法
welcome(arg1,arg2) {|block| #code}
但有时我想打电话
welcome(arg1) {|block| #code}
两个调用的 block 部分是相同的
请帮我 DRY 这段代码并实现功能
编辑
抱歉没有早点展示
我正在尝试在我的 Rails 应用程序中实现 wicked_pdf 插件。它有以下代码
Open3.popen3(command_for_stdin_stdout,"b") do |stdin, stdout, stderr|
stdin.write(string)
stdin.close
pdf = stdout.read
raise "PDF could not be generated!\n#{stderr.read}" if pdf.length == 0
pdf
end
仅当服务器在 Windows 上运行时才需要传递给该方法的第二个参数,即“b”,否则不需要该参数。当我尝试传递空白值时,它不会生成 pdf。我试过这样做
Open3.popen3(command_for_stdin_stdout,(["i386-mingw32","mswin","win32","mingw","bccwin","cygwin"].include?(RUBY_PLATFORM) ? "b" : ""))
.......#rest of the code
谢谢
最佳答案
没问题! block 参数在 Ruby 方法中有自己的槽位,因此同时使用 splatted 参数是绝对安全的。
def welcome(*args)
puts args.inspect
yield
#....some code
end
welcome "asdf", "asdf" do
puts "uh-oh"
end
welcome "just one" do
puts "still works?"
end
关于ruby-on-rails - Rails 2 -- 基于服务器操作系统将参数传递给 wicked_pdf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5900153/