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:
23 24 25 26 27 28 29 |
# File 'ext/utilrb/utilrb.cc', line 23
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/utilrb/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;
}
|