Цикличное выполнение через все экземпляры объекта JavaScript

Проверьте os.makedirs : (Это удостоверяется, что полный путь существует.)
Для обработки факта каталог мог бы существовать, поймать OSError. (Если exist_ok False (значение по умолчанию), OSError повышен, если целевой каталог уже существует.)

import os
try:
    os.makedirs('./path/to/somewhere')
except OSError:
    pass

5
задан 8 August 2009 в 04:16
поделиться

3 ответа

Невозможно перебрать все созданные вами объекты, если вы не отслеживаете их где-нибудь (например, в конструкторе). Что-то вроде этого-

var globalCatArray = [];

function cat(color, sex){
    this.color = color;
    this.sex = sex;
    globalCatArray.push(this);
}

var fluffball = new cat("blue","male");
var shiznitz = new cat("red","male");
var slothersburger = new cat("green","female");

//use globalCatArray to get all instances

Осторожно. Пока объекты находятся в массиве, они остаются в памяти без сборки мусора. Поэтому, если вы создаете много объектов, вы можете удалить их из массива, как только вы закончите с ним.

Также не используйте for..in для итерации циклов. См. Это расширение массива Javascript

5
ответ дан 13 December 2019 в 19:32
поделиться

Вы можете создать своего рода объект CatFactory , предназначенный для создания и отслеживания экземпляров объекта Cat:

Использование:

CatFactory.createCat('fluffball', 'blue','male');
CatFactory.createCat('shiznitz', 'red','male');
CatFactory.createCat('slothersburger', 'green','female');


CatFactory.forEachCat (function () { // forEach abstraction
  alert(this.name + ' is ' + this.color);
});

Реализация:

function Cat (name, color, sex){
  this.name = name;
  this.color = color;
  this.sex = sex;
}

CatFactory = {
  createCat: function () {
    var newCat = {};
    Cat.apply(newCat, arguments);
    this.allCats.push(newCat); 
    return newCat;
  },

  allCats: [],

  forEachCat: function (action) {
    for (var i = 0; i < this.allCats.length; i++){
      action.call(this.allCats[i]);
    }
  } 
};
5
ответ дан 13 December 2019 в 19:32
поделиться

Следующий код должен помочь. Я использовал следующую формулу для остатков:

residual[i] =   (computed_x[i] - actual_x[i])^2
              + (computed_y[i] - actual_y[i])^2

И затем вывел формулы наименьших квадратов на основе общей процедуры , описанной в Wolfram's MathWorld.

Я протестировал этот алгоритм в Excel, и он работает как ожидается. Я использовал набор из десяти случайных точек, которые затем вращались, транслировались и масштабировались с помощью случайно сгенерированной матрицы преобразования.

Без применения случайного шума к выходным данным эта программа создает четыре параметра ( P , Q , R и S ), которые идентичны входным параметрам, и нулевое значение rSquared .

As все больше и больше случайного шума применяется к выходным точкам, константы начинают отклоняться от правильных значений, var cats = [];

cats[0] = new cat();

cats[0].color = "red";
cats[0].name = "fluffy";

for ( var cur in cats )
{
    //Do Things
} 

Извините за все правки - сегодня полусонный.

0
ответ дан 13 December 2019 в 19:32
поделиться
Другие вопросы по тегам:

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