APIdock / Ruby
/
method

replace

ruby latest stable - Class: Array
replace(p1)
public

Replaces the contents of self with the contents of other_ary, truncating or expanding if necessary.

a = [ "a", "b", "c", "d", "e" ]
a.replace ([ "x", "y", "z" ]) #=> ["x", "y", "z"]
a #=> ["x", "y", "z"]
VALUE
rb_ary_replace(VALUE copy, VALUE orig)
{
 rb_ary_modify_check(copy);
 orig = to_ary(orig);
 if (copy == orig) return copy;
 if (RARRAY_LEN(orig) <= RARRAY_EMBED_LEN_MAX) {
 VALUE shared = 0;
 if (ARY_OWNS_HEAP_P(copy)) {
 RARRAY_PTR_USE(copy, ptr, ruby_sized_xfree(ptr, ARY_HEAP_SIZE(copy)));
 }
 else if (ARY_SHARED_P(copy)) {
 shared = ARY_SHARED(copy);
 FL_UNSET_SHARED(copy);
 }
 FL_SET_EMBED(copy);
 ary_memcpy(copy, 0, RARRAY_LEN(orig), RARRAY_CONST_PTR(orig));
 if (shared) {
 rb_ary_decrement_share(shared);
 }
 ARY_SET_LEN(copy, RARRAY_LEN(orig));
 }
 else {
 VALUE shared = ary_make_shared(orig);
 if (ARY_OWNS_HEAP_P(copy)) {
 RARRAY_PTR_USE(copy, ptr, ruby_sized_xfree(ptr, ARY_HEAP_SIZE(copy)));
 }
 else {
 rb_ary_unshare_safe(copy);
 }
 FL_UNSET_EMBED(copy);
 ARY_SET_PTR(copy, RARRAY_CONST_PTR(orig));
 ARY_SET_LEN(copy, RARRAY_LEN(orig));
 rb_ary_set_shared(copy, shared);
 }
 return copy;
}

AltStyle によって変換されたページ (->オリジナル) /