Си диез / Говнокод #13880 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
private List<Ball> _balls;
private Interaction GetInteraction(Ball ball) {
  foreach (var b2 in _balls.SkipWhile(b => b != ball).Skip(1)) {
      /* ... */
  }
}

var table = _balls.Select(GetInteraction);

Откопал в своей проге.
нужно было определить, какой шарик с кем взаимодействует раньше всего, притом если уже рассчитано взаимодействие 1 и 2 шарика (при рассчёте взаимодействий 1 и 2, 1 и 3, 1 и 4, ... и выделено самое раннее взяимодействие шарика 1), то взимодействие 2 и 1 рассчитываеть не надо. Таким образом, нужно было пройти все пары шариков так, чтоб первый встретился в списке раньше второго.
Массивы, индексы и циклы? Не, не знаем такого. Только Select, только ФП, только колдовство со SkipWhile(b => b!=ball).Skip(1).

Запостил: Jean-Esther Jean-Esther, (Updated )

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

  • Чего-то в коде не хватает для полной картины, в данном примере GetInteraction вообще не вызовится, тк вы передаете сам метод, а так же ещё заметно что не все скопировали, тк нет return в конце метода
    Ответить
    • return находится внутри foreach, я не счёл нужным приводить лапшу из if-else.
      Ответить
      • Шарп не позволит скомпилировать такой код без return (или throw) в конце, поскольку возможно что тело foreach не выполнится ни разу.
        Ответить
        • не нужно мне мозги давить. у меня компилируется. могу полный код привести. только, имхо, это совешенно неоправданно, там ничего особо говнокодистого нет. и да, там есть финальный return.
          Ответить
          • > return находится внутри foreach
            > там есть финальный return
            Путаемся в показаниях? 🙂

            Вот return после foreach есть, потому и компилируется. Или в шарпе та же срань, что и в сишке\крестах: пропущенный return всего лишь ворнинг?
            Ответить
    • Как раз-таки вызовется, поскольку Select принимает делегат и применяет его к каждому элементу массива (правда по мере обращений к результату).
      Ответить
  • И какая муха его укусила? Может, с работы попёрли? Я бы тогда тоже на всех кидался.
    Ответить

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

Где здесь C++, guest?!

    А не использовать ли нам bbcode?


    8