Tips&Tricks — Проверка объявления переменной — массива и вставка нового элемента

июля 21, 2012  |  Published in Ruby, Tips&Tricks  |  3 Comments

Вам наверное знаком такой код:

a ||= []
a << elem

Так вот, вместо нее можно использовать:

a = [1,2,3,4,5]
b = nil

a = Array.new([*a, 6])
b = Array.new([*b, 1])

a # => [1, 2, 3, 4, 5, 6]
b # => [1]

UPD Предложение от Михаила Дитерле в комментариях:

a = [*a, 6]
b = [*b, 1]
Tags: , ,

Responses

  1. says:

    июля 21, 2012 at 15:37 (#)

    Если массив очень большой, это пустая трата памяти, т.к фактически создается дубликат массива с добавленным элементом, плюс избыточное использование Array.new тут, можно проще

    a = [*a, 6]
    b = [*b, 1]
    
  2. admin says:

    июля 21, 2012 at 18:07 (#)

    Михаил, на больших массивах естественно тормозить будет, даже методы из классов ядра, а еще его в цикле нельзя использовать… Это люди должны как очевидные вещи понимать. Вообще рецепт для простеньких случаев, когда в массиве не больше нескольких десятков элементов. Касательно твоего «редизайна» — добавлю его в UPD. Спасибо за улучшение, чего-то сам не сообразил без Array использовать.

  3. belka says:

    сентября 8, 2012 at 11:58 (#)

    a ||= []
    a << elem

    Это можно записать так: (a ||= []) << elem

Leave a Response

Для подсветки кода используйте BB - коды: [language]...[/language], где language может быть: ruby, javascript, css, html.