Project

General

Profile

Feature #12746

class Array: alias .prepend to .unshift ?

Added by shevegen (Robert A. Heiler) over 1 year ago. Updated 11 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) 11 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 11 months ago

NEWS: mention Array#append and Array#prepend

[Feature #12746] [ci skip]

History

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

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