RX0056

Domínio: Execução

Mensagem de erro

%s não pode ser ordenado em relação a %s — uma ordenação compara dois valores de UM só tipo

Na mensagem, %s marca um valor que o motor preenche quando levanta o erro.

A história

Você comparou dois valores de tipos diferentes com menor ou maior, e o motor recusou. Vamos entender. Os operadores de ordem perguntam qual de dois valores vem primeiro. Essa pergunta só faz sentido dentro de um mesmo tipo: dois números, comparados pelo valor, ou dois textos, comparados byte a byte. Entre um número e um texto, ou entre um valor de verdade e um número, não existe ordem. Inventar uma seria coerção, e o rush não coage: números entre aspas continuam sendo texto. Por isso, um menor que a letra a, ou um menor que o texto dois entre aspas, é recusado. A mensagem mostra o tipo de cada lado. Agora, repare numa diferença. A igualdade é outra pergunta, e tem resposta entre tipos: valores de tipos diferentes nunca são iguais. Então um igual ao texto um entre aspas responde falso, sem erro. A correção para a ordem: converta um dos lados, de modo que os dois sejam do mesmo tipo, por exemplo transformando o texto em número com to ponto number.

Texto do catálogo de erros do motor do Rush.