1. Python / Говнокод #24866

    −11

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    #Было:
    sorted(lst, key=lambda x: x['key'])
    #или
    sorted(lst, key=operator.itemgetter('key')
    
    #стало:
    sorted(lst, key=S_['key'])

    Говнокоданы, как вам такая идея?

    Запостил: syoma, 07 Октября 2018

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

    • Что есть "S_"? Что за хуйню ты написсал?
      Ответить
      • S_ - это магия. Апи такое устраивает, дурачок?
        Ответить
        • Реализовал, проверь:
          class S:
              def __getitem__(self, y):
                  return lambda x: x[y]
          S_ = S()
          Прикольно.
          Ответить
          • Перевёл, проверь:
            <?php
            class S {
                public function __get($y) {
                    return function($x) {return $x[$y];}
                }
            }
            
            $S_ = new S;
            Ответить
            • <?php
                  class Comparator {
                      public function __get($x) {
                          return function($a, $b)use($x) {return strcasecmp($a[$x], $b[$x]);};
                      }
                  }
                   
                  $_ = new Comparator;
                   
                  $data = array(
                      array('name' => 'xyu', 'length' => '30'),
                      array('name' => 'pizda', 'length' => '0'),
                      array('name' => 'dzhigurda', 'length' => '200')
                  );
                   
                  usort($data, $_->name);
                   
                  var_dump($data);


              https://ideone.com/u4T5f4
              Ответить
    • Ещё, в отличии от itemgetter, оно может поддерживать много уровней (сортировка жысона по параметрам - типичный юз кейс). Кстати, что мешало это там сделать?

      S_['huj']['pizda']['dzhigurda']
      Ответить
      • А itemgetter'ы друг в друга не вкладываются? Хотя походу нет, раз один параметр.
        Ответить
        • Покажи как.
          Ответить
          • Х.з. тут недавно композицию функций мутили на питоне, можно что-то типа itemgetter('hui') * itemgetter('pizda') * itemgetter('djigurda'). Где * - оператор композиции.
            Ответить
    • S_ - это $_ из перла и руби, дефолтовая переменная.
      Ответить
    • Кто-то реально использует итемы и аттрибуты в одном выражении? Типа S_.asd['a'], нужно это?
      Ответить
    • Это как "_1" в "C++"?
      Ответить

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