Кресты / Говнокод #27413 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
if constexpr (BusMode::BLOCKING == mode) {
    derived()->send_block(arr, num);
} else if (BusMode::IT == mode){
    derived()->send_it(arr, num);
} else if (BusMode::DMA == mode){
    derived()->send_dma(arr, num);
}

https://habr.com/ru/post/556144/
> Отладочный вывод на микроконтроллерах: как Concepts и Ranges отправили мой printf на покой
Стреляем себе в ногу при помощи if constexpr.

Запостил: PolinaAksenova PolinaAksenova, (Updated )

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

  • А всё потому, что else if — это ня специальная конструкция, а сочетание двух обычных ╮( ̄ω ̄;)╭.
    Ответить
    • Конпелятор умный же и сам оптимизнёт?
      Ответить
                  • Хочу, чтобы все писали на «Nim», как единый организм «метух».
                    Ответить
                  • Кстати, а ты знал, что в «Nim» можно вот так вот выйти из двойного цикла:
                    block double_loop:
                      while true:
                        while true:
                          echo "Ня! ^~^"
                          break double_loop

                    Как тебе такое? Это хуйня в стиле GOTO или же принципиально новая концепция, элегантно решающая проблему?

                    Правильный ответ – второе.
                    Ответить
                    • В Kotlin тоже можня!
                      fun main() {
                          val arr = listOf(
                              listOf(1, 2, 3),
                              listOf(4, 5, 6),
                              listOf(7, 8, 9)
                          )
                      
                          toplevel@ for (lst in arr) {
                              for (x in lst) {
                                  println(x)
                                  if (x == 5) {
                                      break@toplevel
                                  }
                              }
                          }
                      }

                      Это, правда, очень няидиоматичный Котлин, ну да ладня.
                      Ответить
                      • Это потому что «Kotlin» кавайный!

                        Но можно ли сделать в «Kotlin» то же самое... Но в compile-time?

                        block double_loop:
                          while true:
                            while true:
                              echo "Ня! ^~^"
                              const neko: bool = false;
                              when neko:
                                echo "Nyan!!!!"
                                break double_loop
                              else:
                                echo "nyan... ;–;"
                                break double_loop


                        «when» тут это аналог сишных мокросов типа #ifdef uwu
                        Ответить
                        • Вай нот. В ноде всю асинхронщину считай на continuation'ах писали...
                          Ответить
                    • ого, ним опасен, оказывается

                      а он как поехал? стал ватным, или майданным наоборот?
                      Ответить
                      • По-моему это не имеет значения. Поехавший он и есть поехавший.
                        Ответить
                        • С точки зрения программиста -- разумеется
                          Ответить

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

Семь раз отмерь — один отрежь, guest!

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


    8