В Ruby мы можем восстановить каждый цикл для массива, используя цикл 1) while, 2) инструкцию yield (передать значение блоку) и 3) класс Array (чтобы сделать метод доступным для класса Array); следующим образом:Javascript forEach loop - Как его восстановить?
class Array
def reconstructed_each
n = 0
while n < self.length
yield(self[n])
n += 1
end
self
end
end
В Javascript я реконструировал цикл forEach для массива с использованием аналогичного способа; следующим образом:
Array.prototype.reconstructedforEach = function(c) {
var n = 0;
while (n < this.length) {
c(this[n]);
n += 1;
}
};
Та часть я не уверен, о том, как сделать выше функции доступны только массивы, но не другие типы объектов, например, номер.
ОБНОВЛЕНИЕ: У меня это выяснено. Вышеупомянутый фрагмент кода был отредактирован соответствующим образом.
Ваш код рубин сломана: вы используете '[]' метод, но этот метод не является частью протокола 'Enumerable'. То же самое относится к 'length'. Кроме того, 'each' должен возвращать' Enumerator' при вызове без блока, который ваш метод не делает. –