Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在ruby array/hash/set中使用什么来存储版本号列表?_Ruby - Fatal编程技术网

在ruby array/hash/set中使用什么来存储版本号列表?

在ruby array/hash/set中使用什么来存储版本号列表?,ruby,Ruby,我想获得一份软件发布的有序列表,该列表基于我们在“发布”文件夹中的每个发布。ie/releases/7.1,/releases/7.2等 # Regexp out the number from the filename def get_version(filename) [0,0] # obviously returns different numbers based on regx # {:major => 0, :minor => 0} # or was thinki

我想获得一份软件发布的有序列表,该列表基于我们在“发布”文件夹中的每个发布。ie
/releases/7.1
/releases/7.2

# Regexp out the number from the filename
def get_version(filename)
  [0,0] # obviously returns different numbers based on regx
  # {:major => 0, :minor => 0}  # or was thinking about a Hash?
end

versions = [] 
#versions = Array.new() # Is this better? 

Dir.new(basedir).entries.each do |filename|
  versions << get_version(filename) if not File.directory? filename
end

versions.each {|major, minor| puts "#{major}.#{minor}" }
但现在我想让它们看起来像这样:-

4.10
7.1
7.2
7.3
7.4
7.5
7.6
7.8
7.9
7.10  # I appreciate that these might appear below 7.1, I dont mind too much about that
7.11
那么
Symbol
s呢


非常感谢。

我建议你使用gem。或者,如果您不想使用gem创建您自己的类,并混合在可比较的模块中,并实现版本比较(关于如何实现这一点,有很多问题)

为什么不在另一个数组中收集版本并在打印之前对其进行排序

versions_array = Dir.new(basedir).entries.map do |filename|
  get_version(filename) unless File.directory? filename
end
versions_array.compact!
versions = versions_array.map {|major, minor| "#{major}.#{minor}" }
puts version.sort { |a, b| a.to_f <=> b.to_f }
versions_array=Dir.new(basedir.entries.map do |文件名|
获取_版本(文件名),除非File.directory?文件名
结束
版本\u array.compact!
versions=versions_array.map{| major,minor |“{major}.{minor}”
将version.sort{| a,b | a.to|f b.to|f}

对不起,我可能没有抓住问题的重点。但为什么不使用排序方法呢?
versions_array = Dir.new(basedir).entries.map do |filename|
  get_version(filename) unless File.directory? filename
end
versions_array.compact!
versions = versions_array.map {|major, minor| "#{major}.#{minor}" }
puts version.sort { |a, b| a.to_f <=> b.to_f }