Module: Enumerable

Included in:
NullEnumerator, SequenceEnumerator
Defined in:
lib/utilrb/enumerable/random_element.rb

Instance Method Summary collapse

Instance Method Details

#each_uniqObject

: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_elementObject

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_setObject

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;
}