Go: especificação: solicitação de recurso: adicionar uma expressão ternária

Criado em 23 jun. 2017  ·  3Comentários  ·  Fonte: golang/go

Fazendo algo como:

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

... é muito complicado para um seletor tão simples. Realmente deveria haver:

         value != nil ? *value : defaultValue

... ou:

       cond value != nil,  *value, defaultValue

Comentários muito úteis

Foi uma decisão explícita de design (para legibilidade) que Go não tem expressões ternárias.

Às vezes, Go faz com que você escreva mais algumas linhas, mas aceitamos esse custo pela clareza e legibilidade.

Todos 3 comentários

Foi uma decisão explícita de design (para legibilidade) que Go não tem expressões ternárias.

Às vezes, Go faz com que você escreva mais algumas linhas, mas aceitamos esse custo pela clareza e legibilidade.

No momento, estou trabalhando em uma peça em que há montes de mapeamento de condições simples e simples. A ausência do operador ternário torna-o tão ilegível! É tão frustrante!

O operador ternário torna o código legível e limpo para mim.

É assim que eu fiz em 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
         }
Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

myitcv picture myitcv  ·  3Comentários

Miserlou picture Miserlou  ·  3Comentários

dominikh picture dominikh  ·  3Comentários

enoodle picture enoodle  ·  3Comentários

OneOfOne picture OneOfOne  ·  3Comentários