Module: Enumerable
- Included in:
- NullEnumerator, SequenceEnumerator
- Defined in:
- lib/utilrb/enumerable/random_element.rb
Instance Method Summary collapse
-
#each_uniq ⇒ Object
:nodoc:.
-
#random_element ⇒ Object
Returns a random element in the enumerable.
-
#to_value_set ⇒ Object
Builds a ValueSet object from this enumerable.
Instance Method Details
#each_uniq ⇒ Object
:nodoc:
31 32 33 34 35 36 37 |
# File 'ext/utilrb_ext.cc', line 31 static VALUE enumerable_each_uniq(VALUE self) { set<VALUE> seen; rb_iterate(rb_each, self, RUBY_METHOD_FUNC(enumerable_each_uniq_i), (VALUE)&seen); return self; } |
#random_element ⇒ Object
Returns a random element in the enumerable. In the worst case scenario, it converts the enumerable into an array
9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# File 'lib/utilrb/enumerable/random_element.rb', line 9 def random_element if respond_to?(:to_ary) to_ary.random_element elsif respond_to?(:size) return if size == 0 element = rand(size) each_with_index { |e, i| return e if i == element } raise "something wrong here ..." elsif respond_to?(:to_a) to_a.random_element else raise ArgumentError, "cannot ue #random_element on this enumerable" end end |
#to_value_set ⇒ Object
Builds a ValueSet object from this enumerable
380 381 382 383 384 385 386 387 |
# File 'ext/value_set.cc', line 380 static VALUE enumerable_to_value_set(VALUE self) { VALUE vresult = rb_funcall2(cValueSet, id_new, 0, NULL); ValueSet& result = get_wrapped_set(vresult); rb_iterate(rb_each, self, RUBY_METHOD_FUNC(enumerable_to_value_set_i), reinterpret_cast<VALUE>(&result)); return vresult; } |