Pular para o conteúdo principal

avoid_double_and_int_checks

Detalhes sobre o diagnóstico 'avoid_double_and_int_checks' produzido pelo analisador do Dart.

Explicit check for double or int.

Descrição

#

O analisador emite este diagnóstico quando uma instrução if testa o tipo de uma variável com is double e o else if seguinte testa a mesma variável com is int.

Quando compilados para JavaScript, valores int e double são representados como valores Number do JavaScript. Como todo valor int também satisfaz a verificação is double, o ramo is int é inalcançável.

Para saber mais sobre como o Dart representa números em diferentes plataformas, incluindo quando compilado para JavaScript, consulte Números no Dart.

Exemplo

#

O código a seguir produz este diagnóstico porque x é testado com is double e depois com is int, o que torna o ramo is int inalcançável quando compilado para JavaScript:

dart
void f(Object x) {
  if (x is double) {
    print('double');
  } else if (x is int) {
    print('int');
  }
}

Correções comuns

#

Se a distinção entre int e double não for significativa, verifique se o tipo é num:

dart
void f(Object x) {
  if (x is num) {
    print('num');
  }
}

Se os dois ramos forem necessários e for aceitável que valores double inteiros (como 3.0) entrem no ramo is int, verifique is int primeiro. Isso garante que valores inteiros entrem no ramo is int em todas as plataformas:

dart
void f(Object x) {
  if (x is int) {
    print('int');
  } else if (x is double) {
    print('double');
  }
}

Encontrou essa página sem tradução ou que precisa de correção? Abra uma issue e nos ajude a manter esse site em PT-BR para ajudar pessoas como você.