2013-07-18 29 views
5

birkaç kelime tanımlamak Diyelim?REBOL 3 - Kullanıcı tanımlı isim-alanı kelimeleri nereden erişilebilir?</p> <pre><code>Word1: 5 Word2: "blahdiddyblah" </code></pre> <p>kullanımda olan kelimeler mağazaları sisteminin bir kısmı veya blok var mı:

böyle bir şey denedik ancak başarısız oldu:

S1: to-block copy system/contexts/user 

D: 3 

S2: to-block copy system/contexts/user 

Difference s1 s2 

@johnk öneriye göre, Denedim:

>> 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] 

bu ne anlama geliyor? yerel işlevler kullanımdan sonra kullanıcı bağlamına mı bağlı? Bunları bir kullanıcının bağlayabildiği şeylerden ayırmanın bir yolu var mı?

+0

herhangi yerleşik bir deyişle çok daha karmaşık olsun komut veya konsol – kealist

+0

YÜK-GUI içeren kullanıcı bağlamında bağlı hale olduğu kullanılan yük-gui ne yapmaya çalıştığımı kontrol etmeden önce veya sonra çok farklı kelimeler – kealist

+0

bağlar çünkü – kealist

cevap

5

Bir komut dosyasında sözcükler kullandığınızda - etkileşimli olarak girdiğiniz her komut satırı farklı bir komut dosyasıdır - bu kelimeler kullanıcı bağlamına system/contexts/user eklenir. Sadece komut dosyasındaki sözcükleri kullanmak, onları kullanıcı bağlamına ekler, yani ihtiyaç duyulan tüm "kullanım" dır. Bu yeni sözcüklerden herhangi biri lib, çalışma zamanı kitaplığında zaten mevcutsa, kullanıcı bağlam sözcükleri, başlangıç ​​değerlerini o andaki çalışma zamanı kitaplığında bu değerlerin sahip olduğu değerlerden alır.

Örnek kodunuzda, komut dosyanızda form kelimesini kullandığınızda, kullanıcı içeriğine eklenir. Sonra form, o anda lib/form atanan değer atanır. O andan itibaren form bir kullanıcı kelimesidir - sistem word'ü lib/form'dur.

Kelimelerin değerlerinin, kullanıcı bağlamına lib'dan yayıldığı tek zamandır, bu sözcük ilk önce kullanıcı bağlamına eklendiğinde ve ilk değeri verildiğinde ortaya çıkar. Bundan sonra, bu kelimenin lib versiyonunda herhangi bir değişiklik yapmak istiyorsanız, o kelimenin kullanıcı bağlamı haline getirin, kendiniz atamanız gerekir. Eğer ileride aynı değere sahiplerse, o zaman kullanıcı ya da sistem sözcüklerine yeni bir değer atamamış olmanızdır.

Kullanıcı bağlamındaki tüm kelimeler, kullanıcının, lib'dan başlatılanlar bile yapılmış olduğu sözcüklerdir. Kullanıcı bu komutları kullanıcı komut dosyalarına koyarken yaptı. Bu kullanıcı bağlamının bütün noktasıdır. Yani, komut dosyanızda print kullanırsanız, bu bir kullanıcı kelimesidir, diğer kullanıcı sözcüklerinden farklı değildir.

daha fazla detay için buraya bakmak isteyebilirsiniz: burada da How are words bound within a Rebol module? Ve: What is the summary of the differences in binding behaviour between Rebol 2 and 3?

+0

Açıklamayı takdir et - çok yararlı. Kendimi bir çeşit hata ayıklama IDE yapmaya çalışıyorum. RE: LOAD-GUI Kullanıcıların içeriğine kelimeler sızdırmak niyetini/kasıtlılığını anlamaya biraz acemi olabilir, ama ne anlayabileceğimi göreceğim – kealist