Project

General

Profile

Actions

Feature #12746

closed

class Array: alias .prepend to .unshift ?

Added by shevegen (Robert A. Heiler) over 8 years ago. Updated over 7 years ago.

Status:
Closed
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!

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) about 8 years ago

Accepted.

Matz.

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

Actions #5

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

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0