2014-11-13 2 views
0

Это, как правило, способ создания в РубинеHash карта в рубин хранит ключ-значение пары автоматически

colors = { 

"red" => 2, 
"blue" => 3 

} 

Но в коде ниже, где сделал ключ и указанный его соответствующее значение, как это было в Hash Map сделано в хэше "цвета".

puts "enter a string" 
text = gets.chomp 
words=text.split 
frequencies = Hash.new(0) 
words.each {|word| frequencies [word] +=1} 
frequencies = frequencies.sort_by do |wordy, wcounty| 
    wordy 
end 
puts frequencies 

Делается это в каждом цикле или в строке рядом с ним, где «частоты» новое значение присваивается в виде петли, если да, то как?

Я новичок в Ruby, но у меня мало информации о JAVA, поэтому его трудно понять.

+0

Подсказка: как вы можете получить значение в «цветах» с помощью клавиши «синий»? –

+0

почему вы удалили ответ, было ли это неверно? – paul

+0

Это не так, но я думал, что вы не понимаете, это часть значения по умолчанию. –

ответ

0

Если вы посмотрите на эту линию:

words.each {|word| frequencies [word] +=1} 

вы можете думать об этом этот код, как это (только для примера, это не rubyish способ писать):

i=1 
words.each do |word| 
    frequencies [word] = i 
    i = i +1 
end 

Ключ - это слово и его соответствующее значение, которое вы назначаете i. Если вам интересно, значения ключа do/end совпадают с {}. Вы используете его, когда код внутри итератора охватывает несколько строк.

Надеюсь, это поможет

+0

Правый Лукас, но чтобы назначить ключ значению, мы используем '=>', то, как мы использовали в «цветах», но в другом коде '='. который используется для назначения значений. Разве это не смущает? – paul

+0

Привет, Пол. Не совсем, есть два способа сделать это. Вы можете создать хэш следующим образом: ** colors = {"red" => 2, "blue => 3} ** или вы можете создать новый хеш и назначить значения после, как вы бы сделали с массивом: ** color = {}; color ["red"] = 2; color ["blue"] = 3 ** – Lucas

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