Feature #12746
closedclass Array: alias .prepend to .unshift ?
Description
This code works:
array = %w( b c ) # => ["b", "c"]
array.unshift "a"
array # => ["a", "b", "c"]
I would like for .prepend to also work on class Array.
Rationale:
I found myself to sometimes .prepend to a String object
in Ruby, which works very well.
Sometimes I do not want to care whether I have a String
or an Array, I just want to prepend stuff (add to the
beginning).
I can do so via .unshift, fair enough, and I also can
use [] such as:
array[0,0] = 'a'
Which works on both class String and Array.
Since class Hash is sorted (kept in order) these days,
perhaps they can also use a .prepend variant, which
either works for prepending both a key-value pair,
or optionally, to make the value default to nil and
just provide a key (if the user does not need to
specify a specific value) such as:
hash.prepend :cat
hash.prepend cat: :Tom
But primarily, I only ask for class Array since I
have had use cases for class Array; I did not yet
have a similar use case for class Hash.
Feel free to close this if it is considered unwanted
for any reason!
Updated by nrodriguez (Nicolas Rodriguez) about 8 years ago
Also .prepend
sounds more natural than .unshift
(specialy on Array). But it also implies .append
which should be aliased to .push
.
Example :
[1, 2, 3,].append(4).append(5)
Updated by matz (Yukihiro Matsumoto) almost 8 years ago
Accepted.
Matz.
Updated by matsuda (Akira Matsuda) almost 8 years ago
FIY both append and prepend are in ActiveSupport: https://github.com/rails/rails/blob/master/activesupport/lib/active_support/core_ext/array/prepend_and_append.rb
Updated by JustJosh (Joshua Stowers) over 7 years ago
Thanks, Matz! I've been wanting this for a while.
I've just made a PR to the Github repo with the changes: https://github.com/ruby/ruby/pull/1574
Updated by nobu (Nobuyoshi Nakada) over 7 years ago
- Status changed from Open to Closed
Applied in changeset trunk|r58227.
array.c: Array#append and Array#prepend
- array.c (Init_Array): Add alias "append" to Array#push, and
"prepend" to Array#unshift. [Feature #12746] [Fix GH-1574]
Author: pascbjumper2 stowers.joshua@live.com