我正在利用yaml创建配置文件以自动创建机器设置文件。我有一些基本的ruby脚本编写经验,但希望开始更多地使用类来使事情变得更清洁并且在编程方面变得更好。
我的YAML命名为config.yaml:
`machine_configurations:
MACHINE_NAME_1:
Settings:
MACHINE_NAME_2:
Settings:`
我有一个类machine_builder.rb
`require'yaml'
class MachineBuilder
def initialize
@config = YAML.load_file("config.yaml")
end
def machine_list
@config['machine_configurations'].each do |k,v|
k
end
end
end
我想弄清楚怎么做才能存储一组机器配置字符串
我正在测试尝试使用
test = MachineBuilder.new
machine_list = []
machine_list << test.machine_list
我想要得到的结果是
machine_list = ['MACHINE_NAME_1','MACHINE_NAME_2']
但我不断获取存储在数组中的整个哈希键和值。
machine_list = ['MACHINE_NAME_1 => Settings: ...',' MACHINE_NAME_2 => Settings...']
我尝试使用以下方法更改方法,但我想我错过了一些东西。
def machine_list
@config['machine_configurations'].each do |k,v|
return k
end
end
此尝试只返回一个值,我假设这是因为一旦找到一个值,return就会退出循环。
def machine_list
@config['machine_configurations'].each do |k,v|
puts k
end
end
我想最后我还想弄清楚迭代和返回方法中的值的最佳做法是什么,或者有助于更好地理解使用方法和使用方法返回值。
答案 0 :(得分:2)
每个方法返回它调用的原始可枚举对象,这就是你在调用machine_list方法时不断获取整个哈希的原因。
您可以尝试以下代码来获取@config
哈希的键的数组:
def machine_list
@config['machine_configurations'].keys
end
然后:
test = MachineBuilder.new
machine_list = test.machine_list
这样结果将是:
machine_list = ['MACHINE_NAME_1','MACHINE_NAME_2']