Feature #6515 » feature_6515_array_part_of_v3.patch
array.c | ||
---|---|---|
}
|
||
/*
|
||
* call-seq:
|
||
* ary.part_of? other_ary -> bool
|
||
*
|
||
* Array 'A' is part of another array 'B' if
|
||
* each element from 'A' are included in 'B'
|
||
*
|
||
* [ "a", "c" ].part_of? [ "a", "b", "c" ] #=> true
|
||
* [ "a", "d" ].part_of? [ "a", "b", "c" ] #=> false
|
||
* [].part_of [] #=> true
|
||
*
|
||
*/
|
||
static VALUE
|
||
rb_ary_part_of(VALUE ary1, VALUE ary2)
|
||
{
|
||
ary2 = rb_ary_diff(ary1, ary2);
|
||
return rb_ary_empty_p(ary2);
|
||
}
|
||
/*
|
||
* Arrays are ordered, integer-indexed collections of any object.
|
||
* Array indexing starts at 0, as in C or Java. A negative index is
|
||
* assumed to be relative to the end of the array---that is, an index of -1
|
||
... | ... | |
rb_define_method(rb_cArray, "take_while", rb_ary_take_while, 0);
|
||
rb_define_method(rb_cArray, "drop", rb_ary_drop, 1);
|
||
rb_define_method(rb_cArray, "drop_while", rb_ary_drop_while, 0);
|
||
rb_define_method(rb_cArray, "part_of?", rb_ary_part_of, 1);
|
||
id_cmp = rb_intern("<=>");
|
||
sym_random = ID2SYM(rb_intern("random"));
|
test/ruby/test_array.rb | ||
---|---|---|
a = [1,2,3]
|
||
assert_raise(ArgumentError) { a.rotate!(1, 1) }
|
||
end
|
||
def test_part_of?
|
||
assert_equal(true, [].part_of?([]))
|
||
a = [1, 3, 4]
|
||
b = [1, 2, 3, 4, 5]
|
||
assert_equal(true, a.part_of?(b))
|
||
assert_equal(false, b.part_of?(a))
|
||
a = %w( ant bat cat dog )
|
||
b = %w( dog cat bat ant )
|
||
assert_equal(true, a.part_of?(b))
|
||
assert_equal(true, b.part_of?(a))
|
||
assert_raise(TypeError) { a.part_of? 1 }
|
||
assert_raise(ArgumentError) { a.part_of?() }
|
||
end
|
||
end
|
- « Previous
- 1
- …
- 3
- 4
- 5
- Next »