Преобразование для каждого цикла в Coffeescript - PullRequest
2 голосов
/ 08 июля 2011

Попытка преобразовать следующую функцию в Coffeescript:

    var parse = function (elem) {
        for each(var subelem in elem) {
            if (subelem.name() !== null ) {
                console.log(subelem.name());
                if (subelem.children().length() > 0) {
                    parse(subelem);
                }
            } else {
                console.log(subelem);
            }
        }
    };
   var xml = new XML(content);
   parse(xml);

Она просто печатает теги элементов и любой текст в консоль.

Попытка с использованием:

    parse = (elem) ->
        if elem.name()?                 
            console.log elem.name()
            if elem.children().length() > 0
                parse subelem for own elkey, subelem of elem
        else
            console.log elem

xml = new XML content
parse subelem for own elkey, subelem of xml

Но кажется, что он никогда не анализирует что-либо в корневом XML-узле и заканчивается бесконечным циклом рекурсии, непрерывно распечатывающим тег корневых узлов, пока он не взорвется.Есть идеи, что я делаю не так?Спасибо.

1 Ответ

3 голосов
/ 08 июля 2011

Хм. Я проверил это, и проблема, похоже, исчезнет, ​​если вы уроните ключевое слово own, которое добавляет проверку hasOwnProperty. Так или иначе, первый дочерний элемент каждого элемента, кажется, проходит эту проверку, в то время как другие не проходят ее. Я немного озадачен этим, но есть твой ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...