请查看这个名为foo.rb的简单代码:
require( 'getoptlong' )
opts = GetoptLong.new( [ '--ies', GetoptLong::OPTIONAL_ARGUMENT ] )
opts.each do | opt, arg |
if( opt == '--ies' )
puts arg
end
end
opts.each do | opt, arg |
if( opt == '--ies' )
puts arg
end
end
我希望如果我在LINUX中输入:
foo.rb --ies=bar
我会得到:
bar
bar
但是,我只得到一行:
bar
为什么我不能通过GetoptLong实例迭代两次? 谢谢,
答案 0 :(得分:0)
实施不允许。 GetoptLong#each
在循环中调用GetoptLong#get_option
,直到它返回nil
,即“处理完成”。完成后,它始终返回nil
,因此无法再次处理。
你可以创建一个数组:
opts_array = []
opts.each { |o, a| opts_array << [o, a] }
opts_array.each do |opt, arg|
# ...
end
opts_array.each do |opt, arg|
# ...
end