2014-11-20 3 views
1

Я не знаю, как установить емкость массива, поэтому мой массив может хранить только 3 элемента. Например. если я пытаюсь нажать 4-й элемент, он возвращает ошибку. Любые идеи?Ограничение емкости массива в Ruby

+0

Это не так, как работают массивы Ruby. Лучше использовать некоторый класс-оболочку. Бесстыдный плагин, я написал драгоценный камень, который должен покрыть ваши потребности: https://github.com/citizen428/revolver –

ответ

1

Вы можете создать класс-оболочку для своего массива! Вы также можете переопределить «[]» оператор в и проверить, если ваш индекс действителен:

def [](i) 
    # getter 
end 

def []=(i, v) 
    # setter 
end 
6

Array класс по умолчанию не имеет такой функциональности. Таким образом, ваши варианты:

  1. Создать отдельный класс, который хранит три элемента и реализовать свои собственные методы, как push и [].
  2. Подкласс Array и переопределить методы, чтобы только для трех элементов, например:

    class ThreeElements < Array 
        def push(*stuff) 
        raise 'Already has three elements!' unless length < 3 
        super 
        end 
    end 
    

На мой взгляд, # 1 является лучшим вариантом, так как интерфейс Массив по умолчанию имеет слишком много методов беспокоиться о переопределении.

Смежные вопросы