Project

General

Profile

Feature #12746

class Array: alias .prepend to .unshift ?

Added by shevegen (Robert A. Heiler) about 1 year ago. Updated 8 months ago.

Status:
Closed
Priority:
Normal
Assignee:
-
Target version:
-
[ruby-core:77236]

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!

Associated revisions

Revision 58227
Added by nobu (Nobuyoshi Nakada) 8 months ago

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

Revision 58257
Added by kazu 8 months ago

NEWS: mention Array#append and Array#prepend

[Feature #12746] [ci skip]

History

#1 [ruby-core:77279] Updated by nrodriguez (Nicolas Rodriguez) about 1 year 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)

#2 [ruby-core:78320] Updated by matz (Yukihiro Matsumoto) 12 months ago

Accepted.

Matz.

#4 [ruby-core:80509] Updated by JustJosh (Joshua Stowers) 8 months 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

#5 Updated by nobu (Nobuyoshi Nakada) 8 months 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

Also available in: Atom PDF