考慮以下代碼:爲什麼Io REPL和解釋器給我兩個不同的值?
OperatorTable addOperator(":", 2)
: := method(value,
list(self, value)
)
hash := "key": "value"
hash println
回報應該是list(key, value)
,並在IO REPL使用這個時是完全的返回值。使用解釋器時(如io somefile.io
)返回的值爲value
。經過一番檢查,區別在這裏:
# In the REPL
OperatorTable addOperator(":", 2)
message("k" : "v") # => "k" :("v")
# Via the Interpreter
OperatorTable addOperator(":", 2)
message("k" : "v") # => "k" : "v"
爲什麼會發生這種情況?
它在加載的唯一文件的頂部,但仍然沒有效果。 – krainboltgreene
沒關係。滴答指出,它是在編譯時完成的,而不是執行時間。 Io在任何執行之前都有編譯時間(甚至是文件中的第一個表達式),這是操作員混洗髮生的時間。因此,在系統執行文件中的第一個表達式時,更改影響該文件的操作符表已經太晚了。想想它就像在你開始駕駛之前試圖改變你的汽車輪胎,而不是先停下來。 – jer