2010-12-02 49 views
5

我正在用Io語言對操作符進行試驗。在cli中一切正常,但只要我將代碼放入文件中,我就會遇到問題。Io操作員,似乎無法在文件中創建它們

這裏有一個小例子(創建做同樣的事情爲+運營商+++)

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! 

如前所述,這正常工作在CLI中,但是當我嘗試運行不起作用它在一個文件中。我認爲這與文件已被預先準備好,在操作員定義之前有關,但我將如何解決該問題?

回答

4

這是Io中操作員洗牌機的限制。什麼情況大致是這樣的:

  1. 源文件被加載,標記化(在這個階段,沒有運營商都知道)
  2. 運營商洗牌運行
  3. 代碼進行評估

不幸的是你,在操作員洗牌機已經運行之後,您正在操縱洗牌機。

+0

謝謝,這解釋了這個問題。我們應該如何處理?我能想到的一件事是創建一個主文件,首先定義我想要使用的所有操作符,然後在我的項目中加載其餘文件。 – Jakob 2010-12-05 10:24:29

相關問題