ruby中的哈希映射自动存储键值对

ruby中的哈希映射自动存储键值对,ruby,data-structures,hash,Ruby,Data Structures,Hash,这通常是在Ruby中创建哈希映射的一种方法 但在下面的代码中,指定了did键及其对应的值,就像在colors散列中一样 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

这通常是在Ruby中创建哈希映射的一种方法

但在下面的代码中,指定了did键及其对应的值,就像在colors散列中一样

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知之甚少,因此很难理解。

如果您看一下这一行:

words.each {|word| frequencies [word] +=1}
您可以这样想代码,例如,这是一种不鲁莽的编写方式:

i=1
words.each do |word|
  frequencies [word] = i
  i = i +1
end
关键字是您分配给i的单词及其对应值。如果您想知道,do/end键值与{}相同。当迭代器中的代码跨越多行时,可以使用它


希望有帮助提示:如何用蓝色键获取颜色中的值?为什么要删除答案,是不是不正确?这没有错,但我认为您不了解的是默认值部分。对,lucas,但是要将键分配给我们使用的值=>,使用的是我们在颜色中使用的方式,但在其他代码中使用的方式。用于指定值的。你不觉得困惑吗?嗨,保罗。不太可能,有两种方法。您可以像这样创建一个散列:colors={red=>2,blue=>3},或者您可以创建一个新的散列并在之后赋值,就像您对数组所做的那样:color={};颜色[红色]=2;颜色[蓝色]=3
i=1
words.each do |word|
  frequencies [word] = i
  i = i +1
end