سؤال
وأنا بحاجة إلى جمع هذا هو مثل مجموعة. أساسا أنا مسح سلسلة طويلة وإضافة كلمات إلى جمع ولكن أريد أن تكون قادرة على الكشف عندما تكون هناك التكرارات.
إذا مجموعات غير متوفرة، ما هي الطريقة الأكثر فعالية للقيام بذلك في روبي؟ نقاط براوني على سبيل المثال التعليمات البرمجية.
المحلول
الوثائق :
a = [ "a", "a", "b", "b", "c" ]
a.uniq #gets you ["a", "b", "c"]
a.uniq.uniq! #gets you nil (no duplicates :)
نصائح أخرى
وهناك فئة يقع في روبي. يمكنك استخدامه مثل ذلك:
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
وراجع هذا الرابط / الأساسية / فئات / Set.html في أكثر من ruby-doc.org
لا تنتمي إلى StackOverflow