5

我一直在尝试使用 Io 语言的运算符。在 cli 中一切正常,但是一旦我将代码放入文件中,就会遇到问题。

这是一个小例子(创建一个与 + 做同样事情的运算符 +++)

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

1 回答 1

4

这是 Io 中操作符混洗器的限制。发生的事情大致是这样的:

  1. 源文件被加载,标记化(在这个阶段,没有已知的操作符)
  2. 运营商洗牌运行
  3. 代码被评估

对您来说不幸的是,您在操作员洗牌器已经运行后对其进行操作。

于 2010-12-05T03:44:08.747 回答