2015-06-21 6 views
-1

Моя цель - создать хэш, который хранит значения из массива в качестве ключей и получает значения из другого массива в качестве значений. Я хотел бы связать значение «i» от одного массива до значения «i» из другого массива.Назначить хэш для массива

В моем первом массиве хранятся имена файлов и их размеры. Я хочу, чтобы указать некоторое поле из массива имя и отображать его размер

arr = [] 
arr_s = [] 
size = Hash.new 
Dir.glob("#{dirname}/**/*") do |file| 
    if File.file?(file) 
    arr_s[i] = File.size(file) 
    arr[i] = File.basename("#{file}") 
    i += 1 
    size["#{arr[i]}"] = "#{arr_s[i]}" 
    puts size["#{arr[i]}"] 
    end 
end 
+0

Что такое "я" значение? – sawa

+0

var "i" является счетчиком – mike927

ответ

1

Вы можете сделать:

size = Hash[arr.zip(arr_s)] 

Чтобы дать Вам лучшее представление, в irb, я напечатал:

a = (1..5).to_a 
=> [1, 2, 3, 4, 5] 

b = ('a'..'e').to_a 
=> ["a", "b", "c", "d", "e"] 

Затем, набрав

size=Hash[a.zip(b)] 

Возвращает

{1=>"a", 2=>"b", 3=>"c", 4=>"d", 5=>"e"} 

Так что вы можете сделать:

puts size[1] 

, который будет возвращать

"a" 

т.д.

+0

Отлично, работает, но я хотел бы отображать только значение ключа, а не целое утверждение – mike927

+0

@ mike927 См. Править – user2635088

+0

@ mike927 это работало? – user2635088

Смежные вопросы