2010-12-02 13 views
5

He estado experimentando con operadores en el lenguaje Io. Todo funciona bien en el cli, pero en cuanto pongo mi código en los archivos, me encuentro con problemas.Io operadores, parece que no pueden crearlos en un archivo

Aquí hay un pequeño ejemplo (la creación de un operador +++ que hace lo mismo que +)

OperatorTable addOperator("+++", 3)  # Say that +++ should be an operator 
Number +++ := method(v, call target + v) # Define the slot +++ on numbers 
(30 +++ 40) println      # Try it out! 

Como se ha mencionado, esto funciona bien en la línea de comandos, pero no funciona cuando intento ejecutar en un archivo Supongo que tiene algo que ver con el hecho de que el archivo ha sido preparsed, antes de que se defina el operador, pero ¿cómo podría solucionarlo?

Respuesta

4

Esto es una limitación del operador shuffler en Io. Lo que pasa es más o menos esto:

  1. archivo de origen se carga, tokens (en esta etapa, no se conocen los operadores)
  2. shuffler operador corre
  3. Código se evalúa

Por desgracia para ti, estás manipulando el mezclador del operador después de que ya se ejecutó.

+0

Gracias, eso explica el problema. ¿Cómo se supone que debemos manejar eso? Una cosa que puedo pensar es crear un archivo principal que primero define todos los operadores que quiero usar y luego carga el resto de los archivos en mi proyecto. – Jakob

+0

Exactamente. jer

Cuestiones relacionadas