2013-07-18 27 views
5

可以說,我定義了幾句話:REBOL 3 - 用戶定義的名稱空間單詞可以在哪裏訪問?

Word1: 5 
Word2: "blahdiddyblah" 

是否有系統,存儲哪些詞使用中的某些部分或塊?

嘗試過這樣的事情,但它失敗:

S1: to-block copy system/contexts/user 

D: 3 

S2: to-block copy system/contexts/user 

Difference s1 s2 

據@johnk的建議,我想:

>> snapshot-of-words: words-of system/contexts/user 
== [system snapshot-of-words words-of contexts user] 

>> x: 1 
== 1 

>> difference snapshot-of-words words-of system/contexts/user 
== [x difference] 

>> difference snapshot-of-words words-of system/contexts/user 
== [x difference] 

>> 5 + 9 
== 14 

>> form ["hellow" "there" ] 
== "hellow there" 

>> difference snapshot-of-words words-of system/contexts/user 
== [x difference + form] 

這是什麼意思?原生函數在使用後綁定到用戶上下文中?有沒有辦法將這些與用戶可能綁定的區分開來?

+0

任何內置字使用成爲必然的用戶上下文是否在腳本或控制檯 – kealist

+0

涉及加載圖形用戶界面複雜得多因爲它綁定了很多不同的單詞 – kealist

+0

在加載之前或之後檢查gui對我所做的事沒有幫助 – kealist

回答

5

當您在腳本中使用單詞時,您交互輸入的每個命令行都是不同的腳本 - 這些單詞將添加到用戶上下文system/contexts/user。只需將腳本中的單詞添加到用戶上下文中即可,這就是所需的全部「使用」。如果在lib(即運行時庫)中已經存在這些新單詞中的任何一個,則用戶上下文單詞將從這些單詞在運行時庫中此時具有​​的值中分配它們的初始值。

在您的示例代碼中,當您在腳本中使用單詞form時,它將被添加到用戶上下文中。然後爲form分配當時分配的值lib/form。從此,form是用戶詞 - 系統詞是lib/form

單詞的值從lib傳播到用戶上下文的唯一時間是該單詞首次添加到用戶上下文並給定其初始值時。在此之後,如果您希望該詞的lib版本中的任何更改成爲該詞的用戶上下文版本,則必須自行指定。如果它們前後具有相同的值,那只是因爲您沒有爲用戶或系統詞語分配新值。

用戶上下文中的所有單詞都是用戶製作的單詞,甚至是從lib初始化的單詞。用戶在將它們放入用戶腳本中時會做出這些單詞。這是整個用戶環境的重點。因此,如果您在腳本中使用print,那麼這是一個用戶詞,與任何其他用戶詞沒有什麼不同。

你可能想在這裏尋找更多細節:How are words bound within a Rebol module? 這裏太:What is the summary of the differences in binding behaviour between Rebol 2 and 3?

+0

欣賞解釋 - 非常有幫助。我試圖讓自己成爲一種調試IDE。 RE:LOAD-GUI我可能有點新手來弄清楚它泄漏到用戶上下文中的意向性/無意性,但我會看看我能弄清楚什麼 – kealist

相關問題