Go: spec: Funktionsanfrage: Fügen Sie einen ternären Ausdruck hinzu

Erstellt am 23. Juni 2017  ·  3Kommentare  ·  Quelle: golang/go

Etwas tun wie:

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

... ist für einen so einfachen Selektor ziemlich umständlich. Es sollte wirklich sein:

         value != nil ? *value : defaultValue

... oder:

       cond value != nil,  *value, defaultValue

Hilfreichster Kommentar

Es war eine explizite Designentscheidung (aus Gründen der Lesbarkeit), dass Go keine ternären Ausdrücke hat.

Manchmal müssen Sie bei Go ein paar Zeilen mehr schreiben, aber wir akzeptieren diese Kosten für die Deutlichkeit und Lesbarkeit.

Alle 3 Kommentare

Es war eine explizite Designentscheidung (aus Gründen der Lesbarkeit), dass Go keine ternären Ausdrücke hat.

Manchmal müssen Sie bei Go ein paar Zeilen mehr schreiben, aber wir akzeptieren diese Kosten für die Deutlichkeit und Lesbarkeit.

Ich arbeite gerade an einem Stück, in dem es haufenweise einfache einfache Bedingungszuordnungen gibt. Die Abwesenheit des ternären Operators macht es sooo unlesbar! Es ist so frustrierend!

Der ternäre Operator macht den Code für mich lesbar und sauber.

So habe ich es in Javascript gemacht:

  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
         }
War diese Seite hilfreich?
0 / 5 - 0 Bewertungen