JoM*_*ojo 2 ruby arrays dynamic
我想迭代一些数组,并希望从一组名称中动态命名它们.像这样的东西,取代name了names array... 的元素
names=[a, b, c]
names.each{|name|
name_array1=[]
name_array2=[]
name_array[0][0].each{|i|
if i>0
name_array1.push([i])
end
if i<0
name_array2.push([i])
end
}
}
Run Code Online (Sandbox Code Playgroud)
基本上创建阵列a_array1,a_array2,a_array[0][0],b_array1,b_array2,b_array[0][0],c_array1,c_array2,c_array[0][0]
这甚至可能吗?
小智 6
Ruby不支持动态局部变量名1.
但是,这可以使用哈希轻松表示.哈希将键映射到值,在这种情况下,键表示"名称",值是数组:
# use Symbols for names, although Strings would work too
names = [:a, :b, :c]
# create a new hash
my_arrays = {}
# add some arrays to our hash
names.each_with_index { |name, index|
array = [index] * (index + 1)
my_arrays[name] = array
}
# see what we have
puts my_arrays
# access "by name"
puts my_arrays[:b]
Run Code Online (Sandbox Code Playgroud)
(有很多方法可以在没有副作用的情况下编写上述内容,但这应该是一个开始.)
1动态实例/类变量名称是一个不同的故事,但最好暂时保留为"高级主题",不适用于当前任务.在过去(Ruby 1.8.x),eval可以用来改变局部变量绑定,但这从来不是一个"好"的方法,并不适用于较新的版本.
| 归档时间: |
|
| 查看次数: |
1964 次 |
| 最近记录: |