سؤال

وأنا بحاجة إلى جمع هذا هو مثل مجموعة. أساسا أنا مسح سلسلة طويلة وإضافة كلمات إلى جمع ولكن أريد أن تكون قادرة على الكشف عندما تكون هناك التكرارات.

إذا مجموعات غير متوفرة، ما هي الطريقة الأكثر فعالية للقيام بذلك في روبي؟ نقاط براوني على سبيل المثال التعليمات البرمجية.

هل كانت مفيدة؟

المحلول

الوثائق :

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top