RX0187

Dominio: Ejecución

Mensaje de error

un texto que no es un número: %s (%s)

En el mensaje, %s marca un valor que el motor completa cuando lanza el error.

La historia

Acabas de ejecutar algo y el motor se detuvo con un mensaje que dice que un texto no es un número. Veamos qué te está diciendo. La función to.number toma un texto y lo lee como un número exacto. Acepta dígitos, como mucho un punto decimal, un signo opcional y un exponente opcional. Así, uno e tres se lee como mil, sin redondeos. Pero si le das algo como la palabra garbage, un texto vacío, o uno punto dos punto tres, no hay ningún número que devolver. Antes, el motor solo decía que la función se negó con un código menos uno, sin explicar nada. Ahora te dice el texto exacto que recibió y la razón. Imagina que le pides a una calculadora que sume la palabra gato: lo honesto es que te diga que gato no es un número. Un ejemplo: si escribes to.number de comillas tres punto cuatro punto cinco, el motor se niega, porque tiene dos puntos. La solución es limpiar el texto antes de convertirlo, por ejemplo dejando uno solo. Y fíjate: la misma regla vale para to.bool, que solo acepta el cero o el uno. Lee el mensaje, ahí está el texto culpable.

Texto del catálogo de errores del motor de Rush.