Go: spec : demande de fonctionnalité : ajouter une expression ternaire

Créé le 23 juin 2017  ·  3Commentaires  ·  Source: golang/go

Faire quelque chose comme :

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

... est assez encombrant pour un sélecteur aussi simple. Il devrait vraiment y avoir :

         value != nil ? *value : defaultValue

... ou:

       cond value != nil,  *value, defaultValue

Commentaire le plus utile

C'était une décision de conception explicite (pour la lisibilité) que Go n'a pas d'expressions ternaires.

Parfois Go vous fait écrire quelques lignes de plus, mais nous acceptons ce coût pour l'explicitation et la lisibilité.

Tous les 3 commentaires

C'était une décision de conception explicite (pour la lisibilité) que Go n'a pas d'expressions ternaires.

Parfois Go vous fait écrire quelques lignes de plus, mais nous acceptons ce coût pour l'explicitation et la lisibilité.

Je travaille en ce moment sur une pièce où il y a des tas de mappages de conditions simples et simples. L'absence d'opérateur ternaire le rend tellement illisible ! C'est tellement frustrant !

L'opérateur ternaire rend le code lisible et propre pour moi.

Voici comment j'ai fait en 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
         }
Cette page vous a été utile?
0 / 5 - 0 notes