ruby - ruby 上的 Caracal gem 跳转到不同的方法,同时继续在文档上书写
问题描述
我一直在为 Ruby 使用 Caracal gem,我正在努力让它在方法之间跳转,同时仍然写入同一个文档。例如:
def main_method
Caracal::Document.save "test.docx" do |docx|
docx.p "stuff"
docx.h1 "more stuff"
docx.h2 "even more stuff"
if $var == 1
method1
else
method2
end
end
end
def method1
docx.p "write this"
end
def method2
docx.p "or write this instead"
end
但是不,如果我跳到另一种方法,它不会继续在文档中写入,显然 Caracal 无法打开文档,定位到最后,然后继续写入(如 Rubý 的 File.open('test .txt', 'a')
有人知道解决这个问题的方法吗?我知道我可以将“写这个”直接放在 if 语句中,但这只是一个基本示例,实际上我需要满足不同条件的几个分支,所以我真的需要跳转到不同的方法,否则会是一团糟。
感谢社区!!
解决方案
该变量docx
仅在附加到该save
方法的块内的范围内。为了让其他方法能够看到和使用此变量,您需要将其作为参数传递。
首先使方法接受一个参数,例如
def method1(docx)
docx.p "write this"
end
然后在调用方法时将实际变量作为参数传递:
#...
if $var == 1
method1(docx)
else
# etc...
推荐阅读
- sql - oracle 中的 Unnest(String_to_array) 转换
- android - cordova android 应用程序可以在模拟器上运行,但在设备上运行时无法连接到服务器
- ubuntu-18.04 - 访问 LXC 中的 USB 以太网适配器
- java - 如何杀死阻止另一个实例运行的春季批处理作业?
- ionic-framework - 错误:未捕获(承诺):TypeError:无法读取离子5中未定义的属性“解雇”
- c# - c#每x秒调用一个方法,但只有一定次数
- javascript - 在同一窗口中打开 UPI 链接
- powerbi - 如何在PowerBI中显示两个字段的减法并显示为一列?
- javascript - 在 Android 6 中使用 Cordova 的 Javascript 语法错误
- javascript - 在ajax响应中获取文件路径时如何强制下载文件