From: gamelinks007@... Date: 2020-05-17T16:51:15+00:00 Subject: [ruby-core:98411] [Ruby master Feature#16899] Proposal: Add Array#both_end method Issue #16899 has been reported by S_H_ (Shun Hiraoka). ---------------------------------------- Feature #16899: Proposal: Add Array#both_end method https://bugs.ruby-lang.org/issues/16899 * Author: S_H_ (Shun Hiraoka) * Status: Open * Priority: Normal ---------------------------------------- ## About Add get first & last value method `Array#both_end`. ## Current Status Somtimes, we want to get both end Array value. But, now no method implemented these behavior. So, define these code. ```ruby class Array def get_first_and_last(count) [self.first(count), self.last(count)] end end ``` ## Proposal Get both end Array value method. `Array#both_end`. Implment new method `Array#both_end` that get both end value in `Array`. ## Array#both_end behavior ```ruby # normal Array ary = [ "w", "x", "y", "z" ] ary.both_end #=> ["w", "z"] ary.both_end(2) #=> [["w", "x"], ["y", "z"] # empty Array [].both_end #=> [nil, nil] [].both_end #=> [nil, nil] # args num is over Array size ary = [ "w", "x", "y", "z" ] ary.both_end(10) #=> [[ "w", "x", "y", "z" ], [ "w", "x", "y", "z" ]] ``` ## Implementation This implmentation used `Array#asscoc`, `Array#first` and `Array#last` in C func. ```c static VALUE rb_ary_both_end(int argc, VALUE *argv, VALUE ary) { VALUE first, last; rb_check_arity(argc, 0, 1); if (RARRAY_LEN(ary) == 0) return rb_assoc_new(Qnil, Qnil); first = rb_ary_first(argc, argv, ary); last = rb_ary_last(argc, argv, ary); return rb_assoc_new(first, last); } ``` ## Problem I'm wondering if I should be these code make error. And, What type error is best? ```ruby # args num is over Array size ary = [ "w", "x", "y", "z" ] ary.both_end(10) #=> error can't get both end value! ``` Also, I wonder if this method name(Array#both_end) is best? I would appreciate your feedback. Thanks -- https://bugs.ruby-lang.org/ Unsubscribe: