0

我的 Ruby 代码中有一个代码片段:

while words.size >= 3
  frequency["#{words[0]} #{words[1]} #{words[2]}"] += 1
  words.shift
end

我想设置一个变量i,并根据 的值i运行相应的代码。例如是i=2

while words.size >= 2
        frequency["#{words[0]} #{words[1]}"] += 1
        words.shift
end

更改while条件中的值很容易,但是如何根据变量复制循环体i

4

1 回答 1

1

您可以在循环中使用 if..else 语句轻松完成此操作:

while words.size > 0
  if words.size >= 3
    frequency["#{words[0]} #{words[1]} #{words[2]}"] += 1
  elsif words.size >=2
    frequency["#{words[0]} #{words[1]}"] += 1
  else
    break
  end
  words.shift
end

但是,这是 Ruby,根据您创建这些键的方式,很容易说:

while words.size >= 2
   frequency[words.first(3).join(" ")] += 1
   words.shift
end

这将占用 words 数组中的前三个元素,并将它们与空格连接起来,为您提供频率键。在只剩下两个单词的情况下,它会同时使用它们。

于 2013-04-11T00:52:09.307 回答