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

Jak*_*kob 5 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!
Run Code Online (Sandbox Code Playgroud)

如上所述,这在cli中工作正常,但是当我尝试在文件中运行它时不起作用.我认为它与文件已经预先确定的事实有关,在定义运算符之前,但我将如何解决这个问题呢?

jer*_*jer 4

这是 Io 中算子洗牌器的限制。发生的事情大致是这样的:

  1. 源文件已加载,标记化(在此阶段,没有已知的运算符)
  2. 算子洗牌器运行
  3. 代码被评估

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