當我啓動了一個R3阿爾法99屆,並進入這個作爲第一個命令,我得到一個錯誤:爲什麼我不能像EMAIL那樣綁定東西!在口譯員啓動的全球背景下?
>> is-email-addr: get bind to-word "email?" bind? 'system
** Script error: email? is not in the specified context
** Where: bind
** Near: bind to-word "email?" bind? 'system
但是,如果我退出,重啓,而是執行一個測試,以證明email?
原始生活在像system
對象全球範圍內,測試本身讓我的別名工作:
>> equal? bind? 'system bind? 'email?
== true
>> is-email-addr: get bind to-word "email?" bind? 'system
>> is-email-addr [email protected]
== true
這是怎麼回事,在這裏?
在一個新鮮的解釋,*獲得綁定/新詞「的電子郵件?」綁定? '系統*也不起作用。事實上,運行該命令會導致您的實習例子隨後失敗。但是,如果解釋器在綁定後重新啓動,那麼INTERN示例就像LOAD一樣工作。 Whyzzat? – HostileFork 2010-06-22 06:38:16
正如AltME所提到的,不直接使用單詞的原因是試圖編寫一個簡單的重映射器,它需要*「em」*和*'email!*並且縮寫爲* em * *作爲* email的別名*和* em!*用於* email!*。這需要利用單詞之間的字符串關係。 – HostileFork 2010-06-22 06:40:18
「Whyzzat?」因爲當你運行這個命令時,你添加了單詞'email?到用戶上下文,沒有給它賦值,也不要從系統或導出上下文遷移值。以後運行INTERN(LOAD調用INTERN)時,它會在用戶上下文中看到現有單詞,並且不會覆蓋它,因爲它是用戶單詞。默認情況下,用戶上下文不會填充系統內容和導出上下文 - 它會根據需要填充。如果你想要系統值,從一開始就使用INTERN真的會更好。 – BrianH 2010-06-23 19:53:41