Go: spec: Запрос функции: добавить тернарное выражение

Созданный на 23 июн. 2017  ·  3Комментарии  ·  Источник: golang/go

Сделать что-то вроде:

      if value != nil {
        return *value
      }
      return defaultValue

... довольно громоздко для такого простого селектора. На самом деле должно быть:

         value != nil ? *value : defaultValue

... или:

       cond value != nil,  *value, defaultValue

Самый полезный комментарий

Это явное дизайнерское решение (для удобства чтения), что в Go нет троичных выражений.

Иногда Go заставляет вас написать еще несколько строк, но мы принимаем эту плату за ясность и удобочитаемость.

Все 3 Комментарий

Это явное дизайнерское решение (для удобства чтения), что в Go нет троичных выражений.

Иногда Go заставляет вас написать еще несколько строк, но мы принимаем эту плату за ясность и удобочитаемость.

Я сейчас работаю над частью, где есть куча простых простых отображений условий. Отсутствие тернарного оператора делает его ооочень нечитаемым! Это так обидно!

Тернарный оператор делает код понятным и чистым для меня.

Вот как я сделал в Javascript:

  function getLevel(level) {
-            if (level <= 23100) {
-                return 23100
-            }
-            else if (level <= 24000) {
-                return 24000
-            }
-            else if (level <= 25200) {
-                return 25200
-            }
-            else if (level <= 26400) {
-                return 26400
-            }
-            else if (level <= 27600) {
-                return 27600
-            }
-            else if (level <= 28800) {
-                return 28800
-            }
-            else if (level <= 30300) {
-                return 30300
-            }
-            else if (level <= 31800) {
-                return 31800
-            }
-            else if (level <= 33300) {
-                return 33300
-            }
-            else if (level <= 34800) {
-                return 34800
-            }
-            else if (level <= 36300) {
-                return 36300
-            }
-            else if (level <= 38200) {
-                return 38200
-            }
-            else if (level <= 40100) {
-                return 40100
-            }
-            else if (level <= 42000) {
-                return 42000
-            }
-            else if (level <= 43900) {
-                return 43900
-            }
-            else {
-                return 45800
-            }
+            return  level <= 23100 ? 23100 :
+                    level <= 24000 ? 24000 :
+                    level <= 25200 ? 25200 :
+                    level <= 26400 ? 26400 :
+                    level <= 27600 ? 27600 :
+                    level <= 28800 ? 28800 :
+                    level <= 30300 ? 30300 :
+                    level <= 31800 ? 31800 :
+                    level <= 33300 ? 33300 :
+                    level <= 34800 ? 34800 :
+                    level <= 36300 ? 36300 :
+                    level <= 38200 ? 38200 :
+                    level <= 40100 ? 40100 :
+                    level <= 42000 ? 42000 :
+                    level <= 43900 ? 43900 : 45800
         }
Была ли эта страница полезной?
0 / 5 - 0 рейтинги