Io运算符似乎无法在文件中创建它们

时间:2010-12-02 19:45:54

标签: operators iolanguage

我正在尝试使用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中工作正常,但是当我尝试在文件中运行它时不起作用。我认为它与文件已经预先确定,在定义运算符之前的事实有关,但我将如何解决这个问题?

1 个答案:

答案 0 :(得分:4)

这是Io中操作员洗牌的限制。结果大致如下:

  1. 源文件已加载,标记化(在此阶段,未知操作符)
  2. 运营商洗牌运行
  3. 评估代码
  4. 不幸的是,在你已经运行后,你正在操纵操作员洗牌。