如何解决在Ruby中以编程方式创建数组名称
|| 我是一个菜鸟程序员,想知道如何使用另一个数组中的单词列表来创建数组名称。 例如,我想使用以下数组:array = [\'fruits\',\'veggies\']
并把它变成这样:
fruits = []
veggies = []
在Ruby中执行此操作的最佳方法是什么?
这是我的镜头,我惨遭失败:
variables = [\'awesome\',\'fantastic\',\'neato\']
variables.each do |e|
e = []
e << [1,2,3]
end
puts neato
解决方法
问题在于您的数组可能包含与局部变量或方法的名称匹配的值,而这正是痛苦和混乱开始的时候。
最好是构建数组的哈希:
variables = [\'awesome\',\'fantastic\',\'neato\']
hash = variables.each_with_object({ }) { |k,h| h[k] = [ ] }
或者,如果您没有each_with_object
:
hash = variables.inject({ }) { |h,k| h[k] = [ ]; h }
请注意带有argument6ѭ的块中的参数顺序开关,并且您必须从块中返回h
。
这样,您就可以拥有数组,但实际上也可以通过使用像哈希一样小的可移植名称空间来保护名称空间。您可以按照Jacob Relkin的说明快速创建变量,但是这样做会带来麻烦。如果variables
的元素最终不是字母数字,您也可能会遇到麻烦。
,arr = [\'a\',\'b\',\'c\']
arr.each do |a|
self.instance_variable_set((\'@\' + a.to_s).intern,[1,2,3])
}
puts @a #[1,3]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。