我的第一个堆栈溢出帖子。我应该简洁明了,但请在第一次出现时让我沉迷于一些背景知识。我已经用 C 和 Visual Basic 编程了 16 年,但只是兼职来支持我作为科学家的工作。大约一年前开始学习 ruby 并且非常喜欢它。我正在编写一个处理数据的程序。这适用于文件夹和文件,而不是数据库。每次遇到困难时,我总能在这里(多么棒的资源!)或在 Google 上找到解决方案。这一次不同。所以说重点:
我想在 ruby 中使用 highline gem 来显示具有可变数量菜单项的菜单。本质上,我希望用户选择一个目录。父目录中可以有任意数量的目录。我的代码如下:
@allArchiveDirs = Dir.entries(@dirArchive).select {|entry| File.directory? File.join(@dirArchive,entry) and !(entry =='.' || entry == '..') }
p @allArchiveDirs
choose do |menu|
menu.prompt = 'Please choose a project to access:'
temp = @allArchiveDirs.map &:to_sym
# todo here. Cannot get temp into correct format for choices call.
temp = temp.map{|x| x.inspect}.join(', ')
p temp
menu.choices(:old1, :old5) do |chosen|
puts "Item chosen: #{chosen}"
end
end
在 menu.choices 调用的括号中,我通常会有 temp,但目前我有 :old1, :old5 只是为了我自己的调试目的,否则我会收到错误。
输出是:
[“deletemetest”、“old2”、“old3”、“old4”、“TestData”、“testy123”、“tsty”]
“:deletemetest,:old2,:old3,:old4,:TestData,:testy123,:tsty”
- 老1
- 老5
请选择要访问的项目:
所以符号似乎是一个字符串(由于它周围的引号)。如果我可以删除这些,我可能会成功地将 temp 转换为 menu.choice 调用的正确格式。