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

    +131

    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
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    static public int IIF(bool condition, int a, int b)
            {
                int x = 0;
                if (condition)
                {
                    x = a;
                }
                else
                {
                    x = b;
                }
                return x;
            }
    
            static public bool IIF(bool condition, bool a, bool b)
            {
                bool x = false;
                if (condition)
                {
                    x = a;
                }
                else
                {
                    x = b;
                }
                return x;
            }
    
            static public Single IIF(bool condition, Single a, Single b)
            {
                float x = 0;
                if (condition)
                {
                    x = a;
                }
                else
                {
                    x = b;
                }
                return x;
            }
    
            static public Double IIF(bool condition, double a, double b)
            {
                double x = 0;
                if (condition)
                {
                    x = a;
                }
                else
                {
                    x = b;
                }
                return x;
            }
    
            static public decimal IIF(bool condition, decimal a, decimal b)
            {
                decimal x = 0;
                if (condition)
                {
                    x = a;
                }
                else
                {
                    x = b;
                }
                return x;
            }

    Запостил: inser, 03 Марта 2011

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

    • пропустил ещё кусок кода:
      static public String IIF(bool condition, String a, String b)
              {
                  String x = String.Empty;
                  if (condition)
                  {
                      x = a;
                  }
                  else
                  {
                      x = b;
                  }
                  return x;
              }
      Ответить
    • На всякий случай, хуле?!
      Ответить
    • сегодня прям праздник какой-то, говно льётся рекой
      Ответить
    • static public int IWHILE(bool condition, int a)
              {
                  int x = 0;
                  while (condition)
                  {
                      x = a;
                  }
                  return x;
              }
      Ответить
    • Ну шаблонов чел не знает. А, они же в срешётке на этапе выполнения раскрываются, да, тут же скорость важна.

      А в C# можно задавать функции с ленивыми операторами?
      Ответить
      • Что за ленивые операторы? Т.е. перегрузка операторов? Если да, то можно.

        Если уж так нужны эти функции, то из них можно записать в виде:
        return condition ? a : b;

        Другой вопрос - зачем вообще нужны эти функции???
        Ответить
        • не люблю риторические вопросы
          Ответить
        • Нет. Ленивые операторы - это те, которые считают только то, что надо.
          Например
          float GetVal(index: integer; a: array of lazy float) {
          return a[index];
          };

          x := GetVal(2, {sin(x), cos(x), tg(x), ctg(x)});
          вычислится только нужный аргумент
          Ответить
      • Можно передавать Lazy<T>

        var foo = Lazy.New(() => {
            // тут к примеру лезем в базу и считаем чего нибудь
          });
        
        void Bar(bool flag, Lazy<int> argument) 
        {
          if (flag)
          {
               Console.Write(argument)
          }
        }


        Но для оригинального говнокода достаточно ? или ??
        Ответить
    • Вообще не понятно нафиг эти функции.
      Ответить
      • видимо, привык человек к бейсику
        Ответить
        • > человек
          макак и выходец с VB, 80% целевой аудитории до-диеза

          а вот в паскале такое не... WAIT OH SHI-
          function IfThen(AValue: Boolean;
          		const ATrue: Integer;
          		const AFalse: Integer = 0): Integer; overload;
          Ответить
    • Дельфист писал однозначно. Это там стандартная практика была. Народ в большинстве не понимал разницы между IIF(x, y, z) и x ? y : z
      Ответить
      • если нет разницы, то зачем платить больше использовать iif?
        Ответить
        • В Delphi не было ? и ??
          Народ писал самопальные IIF, как вышеприведенный товарищ.
          И утверждали что это то же самое. Поэтому и уверен что это дельфист.
          Ответить
          • по сути, конечно, почти тоже самое... Но только почти... Просто, куда им до таких материй, что бы понять отличие
            Ответить
            • По сути это разные вещи. А то потом удивлялись неожиданным результатам кода вида

              IIF (x = nil, y.Foo(), x.Bar())
              Ответить
              • угу, все значения пытаются вычисляться ДО iif'а :)
                конечно, можно изобретать лучшую эмуляцию этой языковой конструкции, но это как-то только усложняет жизнь :)
                Ответить
          • хуита, iif нативная конструкция бейсика
            Ответить
            • iif - нативная конструкция бейсика
              iif - хуита
              ----------------------------------------------------
              нативная конструкция бейсика - хуита
              Ответить
    • показать все, что скрытоВсё от майкрософт - ХУИТА
      Ответить
    • показать все, что скрытоНу если так нужен метод, то мог бы и написать один метод с двумя параметрами типа object :)
      Ответить
      • Лучше шаблонами
        public static T IIF<T>(bool condition, T a, T b) where T : IConvertible
        {
            T x = default(T);
            if(condition)
            {
                x = a;
            } else
            {
                x = b;
            }
            return x;
        }
        Ответить
        • public static T LazyIF<T>(bool condition, Func<T> a, Func<T> b) where T : IConvertible
          {
              T x = default(T);
              if(condition)
              {
                  x = a;
              } else
              {
                  x = b;
              }
              return x;
          }
          Ответить
    • - Ё моё! - не выдержал я. - Так вот почему тебя Клевером величают.
      Ответить

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