如何在 Ruby 中动态地将代码包装在块内?
假设代码的某一部分需要在不同的块/上下文中运行,具体取决于配置选项。例如,
if silence
silence_stdout do
# do something
end
else
# do the same thing
end
有没有一种方法可以在不重复 # do some
代码的情况下编写此代码?
Suppose a certain part of code needs to be run inside a different block/context, depending on a configuration option. For example,
if silence
silence_stdout do
# do something
end
else
# do the same thing
end
Is there a way to write this without repeating the # do something
code?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
根据“做某事”的代码量,您可以将其放入 lambda 中:
或将其放入方法中:
您还可以稍微翻转一下逻辑:
或者您可以使用整个类或仅使用 lambda 而不是其中的方法最后一张。
Depending on how much code "do something" is you could throw it in a lambda:
or throw it in a method:
You could also turn the logic inside out a bit:
Or you could use whole classes or just lambdas instead of methods in that last one.