gpt4 book ai didi

ruby - 删除命令行开关

转载 作者:太空宇宙 更新时间:2023-11-03 16:04:07 24 4
gpt4 key购买 nike

我使用一个库来定义自己的开关,然后传递 OptionParser 对象让我添加地雷。但是,它添加了我想删除的开关,因为它们会使我的用户感到困惑。

本质上,我想撤消此操作(无需删除代码行,因为它是第 3 方):

opts.on("-p", "--port PORT", Integer, "Specify port", "(default: #{options[:port]})") do |v|
options[:port] = v
end

我试着查看类的代码,但没有找到任何remove 机制。所以我想在通过元编程破解它之前我会先问一下。

编辑 - 元编程方式(非常hacky..):

class OptionParser
attr_accessor :stack
end

...
opts.stack[2].long.reject! { |k| k == "port" }
opts.stack[2].short.reject! { |k| k == "p" }
...

最佳答案

虽然这仍然不是最优雅的解决方案,但您可以使用 instance_variable_get 方法避免重新打开类。在这种情况下,您的代码将变为:

opts.instace_variable_get(:@stack)[2].long.reject! { |k| k == "port" }
opts.instace_variable_get(:@stack)[2].short.reject! { |k| k == "p" }

关于ruby - 删除命令行开关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18144010/

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