1. C# / Говнокод #12814

    +135

    1. 1
    static bool AlwaysTrue<T>(T obj) { return true; }

    ыыы

    Запостил: taburetka, 28 Марта 2013

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

    • Для linq, чтобы для какого-нибудь map'а или filter'а проканывало?
      Ответить
      • Начальник отдела внедряет новые подходы.
        Ответить
      • А в каком коде такое нужно?
        Ответить
        • public static class MyVisualTreeHelper
          {
          static bool AlwaysTrue<T>(T obj) { return true; }

          /// <summary>
          /// Finds a parent of a given item on the visual tree. If the element is a ContentElement or FrameworkElement
          /// it will use the logical tree to jump the gap.
          /// If not matching item can be found, a null reference is returned.
          /// </summary>
          /// <typeparam name="T">The type of the element to be found</typeparam>
          /// <param name="child">A direct or indirect child of the wanted item.</param>
          /// <returns>The first parent item that matches the submitted type parameter. If not matching item can be found, a null reference is returned.</returns>
          public static T FindParent<T>(DependencyObject child) where T : DependencyObject
          {
          return FindParent<T>(child, AlwaysTrue<T>);
          }

          public static T FindParent<T>(DependencyObject child, Predicate<T> predicate) where T : DependencyObject
          {
          DependencyObject parent = GetParent(child);
          if (parent == null)
          return null;

          // check if the parent matches the type and predicate we're looking for
          if ((parent is T) && (predicate((T)parent)))
          return parent as T;
          else
          return FindParent<T>(parent);
          }

          static DependencyObject GetParent(DependencyObject child)
          {
          DependencyObject parent = null;
          if (child is Visual || child is Visual3D)
          parent = VisualTreeHelper.GetParent(child);

          // if fails to find a parent via the visual tree, try to logical tree.
          return parent ?? LogicalTreeHelper.GetParent(child);
          }
          }
          Ответить
        • Да нигде такое ненужно.
          Ответить
          • Ну не знаю, мне такое часто нужно было в универсальных методах, которые берут на вход предикат в качестве фильтра. Судя по ссылке
            http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/base/Predicates.html#alwaysTrue()
            не мне одному.
            Ответить
            • Я вот, честно говоря, тоже не могу представить задачу, где такое будет нужно.
              Может вы опишите?
              Ответить
              • У меня потребность возникла в контексте классификации. Нужно было классифицировать входящие объекты на базе большого списка бизнес-правил. Фактически я соорудил список пар предикат -> классификация, и для входящего объекта проходил по всем парам, возвращая первую классификацию, для которой соответсвующий предикат вернул true (сопоставление с образцом для бедных). Чтобы объект всегда был классифицирован, в конце цепочки стояло правило anything(a.k.a. alwaysTrue) -> defaultClassification.
                Примерно вот так это выглядело:
                https://github.com/roman-kashitsyn/rules-dsl
                Ответить
    • В Х-путе есть такая функция.
      Ответить
    • Судя по всему, это C# 2.0, функция описана для создания предиката, возвращающего true, и который должен подставиться в какую-то generic-либу.
      Т.е. это развоначно лямбдоподобному синтаксису типа \lambda x => true.

      Автор мудак как и все заплюсовавшие и большинство завсегдатаев сего сайта.
      Ответить
      • >по всему, это C# 2.0, функция описана для создания предиката, возвращающего true
        Спасибо, кеп.
        >мудак как и все заплюсовавшие и большинство завсегдатаев сего сайта.
        Ну да. Один ты дАртаньян.
        Ответить
    • const True
      Ответить

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