1. ActionScript / Говнокод #11522

    −92

    1. 1
    2. 2
    3. 3
    public function xor(lhs:Boolean, rhs:Boolean):Boolean {
     return !( lhs && rhs ) && ( lhs || rhs );
    }

    Из http://as3snippets.blogspot.com/2010/09/logical-xor.html

    Как известно, в AS3 есть численный оператор XOR ^, а вот для логических значений ^^ нет. Поэтому ребята придумали такую конструкцию (и ещё вариант return Boolean(int(a) ^ int(b)); в комментах), и только через год какой-то чувак догадался что XOR для логических значений всё-таки есть и называется !=

    Запостил: makc3d, 02 Августа 2012

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

    • кстати последние три кода в категории as3 имеют симметричные номера :) 11499 11500 11522
      Ответить
      • Как бы это сказать помягче... они не симметричны. Ни один из перечисленных вами.
        Ответить
        • это смотря как сравнивать. если по цифрам - то все нет. если по чётности цифр - то 11499 симметричен, остальные - снова нет. если по равенству одной из соседних цифр (как я и сравнил) - то все симметричны.
          Ответить
    • О мой бх! Они изобрели ксор! Вау.
      Что следующее? Стрелка Пирса?
      Ответить
      • ты еще штрих шеффера припомни
        Ответить
        • Мне всегда не хватало
          a^^=b;
          Ответить
          • Если я правильно понял, то:
            a | b | ^ | ^
            --------------
            T | T | F | T
            --------------
            T | F | T | F
            --------------
            F | Т | T | T
            --------------
            F | F | F | F

            Что как бы эквивалентно a = b, не?
            Ответить
            • Интересно, чем руководсвовался покрасчик говнокодов когда не покрасил букву T?
              Ответить
            • нет же, это эквивалентно а = (а != б)
              Ответить
              • Дык это только один цикрумплекс, а автор вроде два написал.
                Ответить
                • Два не в смысле что операцию два раза выполнять, а в смысле что это логический хор.
                  Ответить
                • &&= не делает & два раза же
                  Ответить
                  • А откуда вы знаете? - разницы то никакой. :)
                    А откуда мне знать, что автор имел в виду, написано 2 раза, ну я так и понял, что сделать 2 раза.
                    Ответить
                    • > Как известно, в AS3 есть численный оператор XOR ^, а вот для логических значений ^^ нет.
                      Разве это не вызывает у вас ассоциации с & и &&, а так же с | и ||?

                      ^_^
                      Ответить
                      • >а вот для логических значений нет.
                        Как нет?
                        Есть: !=
                        Ответить
                        • > А ОП между-прочим об этом писал...
                          и только через год какой-то чувак догадался что XOR для логических значений всё-таки есть и называется !=

                          Имеется в виду, что нет оператора, который называется ^^=, а не то, что его невозможно запилить другим способом.
                          Ответить
                          • Он слишком каваен, можно ненароком умереть от передоза.
                            Ответить
                    • если разницы никакой то зачем делать два раза?
                      Ответить
    • но ведь можно же писать
      return (lhs+rhs==1)
      !
      всё прекрасно работает
      Ответить
      • Но зачем так писать, если можно написать
        return lhs != rhs
        Ответить

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