使用方法将密钥字符串保存在哈希中
Saving key string in a hash using a method
我正在利用 yaml 创建一个配置文件来自动创建机器设置文件。我有一些基本的 ruby 脚本编写经验,但希望开始更多地利用 classes 来使事情变得更清晰并更好地进行编程。
我的 YAML 名称 config.yaml:
`machine_configurations:
MACHINE_NAME_1:
Settings:
MACHINE_NAME_2:
Settings:`
我有一个classmachine_builder.rb
`需要'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 一个值,我假设这是因为 return 一旦找到一个值就退出循环。
def machine_list
@config['machine_configurations'].each do |k,v|
puts k
end
end
我想最后我也在尝试找出在方法中迭代和 return 值的最佳实践是什么,或者帮助更好地理解使用方法和 returning使用方法的值。
each 方法 returns 调用它的原始可枚举对象,这就是为什么在调用 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']
我正在利用 yaml 创建一个配置文件来自动创建机器设置文件。我有一些基本的 ruby 脚本编写经验,但希望开始更多地利用 classes 来使事情变得更清晰并更好地进行编程。
我的 YAML 名称 config.yaml:
`machine_configurations:
MACHINE_NAME_1:
Settings:
MACHINE_NAME_2:
Settings:`
我有一个classmachine_builder.rb
`需要'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 一个值,我假设这是因为 return 一旦找到一个值就退出循环。
def machine_list
@config['machine_configurations'].each do |k,v|
puts k
end
end
我想最后我也在尝试找出在方法中迭代和 return 值的最佳实践是什么,或者帮助更好地理解使用方法和 returning使用方法的值。
each 方法 returns 调用它的原始可枚举对象,这就是为什么在调用 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']