我需要一个像集合一样的集合.基本上我正在扫描一个长字符串并在集合中添加单词,但我希望能够检测到何时出现重复.
如果集合不可用,那么在Ruby中最有效的方法是什么?布朗尼指的是例如代码.
ruby中有一个Set类.您可以像这样使用它:
require 'set' set = Set.new string = "a very very long string" string.scan(/\w+/).each do |word| unless set.add?( word ) # logic here for the duplicates end end
虽然,我想知道你是否想在这种情况下计算实例,下面的例子会更好:
instances = Hash.new { |h, k| h[k] = 0 } string.scan(/\w+/).each do |word| instances[word] += 1 end
从文档:
a = [ "a", "a", "b", "b", "c" ] a.uniq #gets you ["a", "b", "c"] a.uniq.uniq! #gets you nil (no duplicates :)
看看这个网址/core/classes/Set.html了在ruby-doc.org