2010-12-02 10 views
5

J'ai expérimenté avec des opérateurs dans le langage Io. Tout fonctionne bien dans le cli, mais dès que je mets mon code dans les fichiers, je rencontre des problèmes.Io opérateurs, ne semble pas les créer dans un fichier

Voici un petit exemple (la création d'un opérateur +++ qui fait la même chose 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! 

Comme mentionné, cela fonctionne très bien dans le cli, mais ne fonctionne pas lorsque je tente d'exécuter dans un fichier. Je présume que cela a quelque chose à voir avec le fait que le fichier a été préparé, avant que l'opérateur ne soit défini, mais comment pourrais-je contourner cela?

Répondre

4

Ceci est une limitation du shuffler d'opérateur dans Io. Ce qui se passe est à peu près ceci:

  1. fichier source est chargé, sous forme de jeton (à ce stade, aucun opérateur sont connus)
  2. opérateur shuffler court
  3. code
  4. est évalué

Malheureusement pour vous, vous manipulez le shuffler d'opérateur après qu'il soit déjà lancé.

+0

Merci, cela explique le problème. Comment sommes-nous censés gérer cela? Une chose que je peux penser est de créer un fichier principal qui définit d'abord tous les opérateurs que je veux utiliser, puis charge le reste des fichiers dans mon projet. – Jakob

+0

Exactement jer

Questions connexes