1. Ruby / Говнокод #18881

    −34

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    <%
       def out_categories(parent, level)
         if (categ = @categories.where(parent_id: parent))
          categ.each do |cat|
    %>
          <div style='margin-left:<%=level * 20%> px'><%= cat.title %></div>
    <%
          level += 1
          out_categories(cat.id, level)
          level -= 1
          end
         end
       end
       out_categories(nil, 0)
    %>

    Draw tree

    Запостил: RubyCoder, 16 Октября 2015

    Комментарии (17) RSS

    • хороший код
      Ответить
    • А так можно?
      out_categories(cat.id, ++level--)
      Ответить
    • Кстати, если не заметно, то это определение функции в темплейтах. Прям как в похапе.
      Ответить
    • >categ.each do |cat|
      Только сука японец мог догадаться до такого синтаксиса.
      Ответить
      • Вообще говоря, это не вот прям сильно отличается от синтаксиса Smalltalk, который придумали в Калифорнии, и который во многом вдохновлял Маца.
        Ответить
        • Я вот пытаюсь понять о чем думали архитекторы когда придумывали использовать | вместо скобок
          Ответить
          • Они просто не были заражены скобкофилией.
            Ответить
            • у них нехватка палок в организме. Поэтому восполняют её в коде.
              Ответить
          • А меня больше настораживают не скобки. Фраза «foreach ($categ as $cat)» довольно легко читается по-английски. И даже «for cat in categ do» (или как там в новых дельфях) тоже.

            Намного хуже читается Жуквери: $(categ).each(function(index, cat) {...}), от которого categ.each do |cat| отличается только тем, что скобочек поменьше.
            Ответить
            • ECMA-way: Не нравится foreach - напиши свой foreach.
              https://www.npmjs.com/search?q=foreach
              Ответить
              • Доктор, я умру?
                Ответить
                • не надейся, человек

                  You are a great soft jelly thing. Smoothly rounded, with no mouth, with pulsing white holes filled by fog where your eyes used to be. Rubbery appendages that were once your arms; bulks rounding down into legless humps of soft slippery matter.
                  Ответить
            • Это по сути не foreach, а map, правильно?
              Ответить
          • А чем Вам так это не нравится? Смотрится интересно.

            А если вдруг захочется вложенности, можно просто использовать и чередовать два вида скобок:
            int fac|int x| |
              if / x <= 0 / return 1;
              return fac / x-1 / * x;
            |
            Ответить
            • Святые вореции, да это же прямо как ограничители регулярок!
              Ответить

    Добавить комментарий