рубиновое наследство против миксинов

Используйте Array.prototype.push метод для добавления значений к массиву:

// initialize array
var arr = [
  "Hi",
  "Hello",
  "Bonjour"
];

// append new value to the array
arr.push("Hola");

console.log(arr);

можно использовать эти push() функция для добавления больше чем одного значения к массиву в единственном вызове:

// initialize array
var arr = ["Hi", "Hello", "Bonjour", "Hola"];

// append multiple values to the array
arr.push("Salut", "Hey");

// display all values
for (var i = 0; i < arr.length; i++) {
  console.log(arr[i]);
}

Обновление

, Если Вы хотите добавить объекты одного массива к другому массиву, можно использовать firstArray.concat(secondArray) :

var arr = [
  "apple",
  "banana",
  "cherry"
];

arr = arr.concat([
  "dragonfruit",
  "elderberry",
  "fig"
]);

console.log(arr);

Обновление

Просто дополнение к этому ответу, если Вы хотите добавить какое-либо значение к запуску массива, который означает для первого индекса тогда, что можно использовать Array.prototype.unshift с этой целью.

var arr = [1, 2, 3];
arr.unshift(0);
console.log(arr);

Это также поддерживает добавление нескольких значений сразу точно так же, как push.

125
задан Brad Cupit 15 August 2009 в 21:14
поделиться

4 ответа

Я только читал об этой теме в «Хорошо обоснованный рубист» (между прочим, великая книга). Автор объясняет лучше, чем я, поэтому я процитирую его:


Ни одно правило или формула не всегда приводит к правильному замыслу. Но полезно держать Когда вы принимаете решение о выборе класса и модуля, помните о нескольких соображениях:

  • У модулей нет экземпляров. Отсюда следует, что сущности или вещи обычно лучше моделируются в классах, а характеристики или свойства сущностей или вещей лучше всего инкапсулировать в модули. Соответственно, как указано в разделе 4.1.1, класс имена, как правило, являются существительными, тогда как имена модулей часто являются прилагательными (Stack против Stacklike).

  • Класс может иметь только один суперкласс, но он может смешивать столько модулей, сколько хочет. Если вы используете наследование, отдайте приоритет созданию разумного суперкласса / подкласса отношения. Не используйте одно-единственное отношение суперкласса к наделите класс тем, что может оказаться лишь одним из нескольких наборов характеристик.

Суммируя эти правила в одном примере, вот чего вам не следует делать:

module Vehicle 
... 
class SelfPropelling 
... 
class Truck < SelfPropelling 
  include Vehicle 
... 

Скорее, вы должны сделать это:

module SelfPropelling 
... 
class Vehicle 
  include SelfPropelling 
... 
class Truck < Vehicle 
... 

Вторая версия моделирует сущности и свойства гораздо более аккуратно. Грузовая машина происходит от Vehicle (что имеет смысл), тогда как SelfPropelling является характеристикой транспортных средств (по крайней мере, всех тех, о которых мы заботимся в этой модели мира) - характеристикой, которая передается грузовикам в силу того, что Truck является потомком, или специализированный форма транспортного средства.

176
ответ дан 24 November 2019 в 01:00
поделиться

Ответ на ваш вопрос во многом зависит от контекста. Исходя из наблюдений pubb, выбор в первую очередь определяется рассматриваемым доменом.

И да, ActiveRecord должен был быть включен, а не расширен подклассом. Другой ORM - datamapper - точно этого достигает!

ActiveRecord должен был быть включен, а не расширен подклассом. Другой ORM - datamapper - точно этого добивается!

ActiveRecord должен был быть включен, а не расширен подклассом. Другой ORM - datamapper - точно этого добивается!

10
ответ дан 24 November 2019 в 01:00
поделиться

Прямо сейчас я думаю о шаблоне проектирования . С модулем было бы неправильно.

-1
ответ дан 24 November 2019 в 01:00
поделиться

Мое мнение: модули предназначены для совместного использования, а классы предназначены для моделирования отношений между объектами. Технически вы могли бы просто сделать все экземпляром Object и смешать любые модули, которые вы хотите получить, чтобы получить желаемый набор поведения, но это будет плохой, случайный и довольно нечитаемый дизайн.

12
ответ дан 24 November 2019 в 01:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: