I.區域變數
區域變數 abc_f_ 呼叫在場合 f 的變數
abc;間接區域變數 abc__xy
呼叫屬於名稱為 xy內值的場合變數 abc 。
為了與前版相容,非標準 abc__ 也被接受,且同於
abc_base_。因此:
b=: 1
Rome=: 2
Rome_NewYork_=: 20
f_NewYork_=: 3 : '3*b=: Rome+y.'
f_NewYork_ 10
90
b,Rome
1 2
b_NewYork_
30
若不是在明確定義(:)時以 =.
指定,變數為全域。 所有全域變數執行的場合為當前場合。一開始,當前場合為 base。執行區域變數
f_abc_時,當前場合轉換成 abc。動詞 18!:4 也能轉換當前場合,而由 18!:5 指定其名稱。
變數 f_abc_ 執行於場合 abc
在sense that a global name referenced in f
is sought rein and, if not found, is n sought 在
場合 在 abc
(but is still executed in abc)的路徑。 場合的路徑起始為 ,<,'z'
,只有場合 z 起初無路徑,而可以 18!:2改變。
以適當地命名執行script的動詞,場合一般被 script移植。
例如,若檔案 stats 含有 script:
mean=: sum % #
sum=: +/
則:
ssx_z_=: 0!:10 Silent script 執行
ssx_a_ <'stats' 殖入場合 a
mean=: 'in base locale'
mean_a_ 3 4 5
4
ssx_bc_ <'stats' 殖入場合 bc
sum_bc_ 3 4 5
12
在 z 場合案例,也展示了場合路徑的使用:首先在 z 場合定義功能指令 ssx 。當執行
ssx_a_時,場合 a 中找不著 ssx,因此到場合 z去找(也找到了)。由於
ssx_a_ 在場合 a 執行 ,而stats script的變數定義於場合 a,將它移植於該處。ssx_bc_也是同樣情況。
也請參閱附錄 A、「場合」以及系統附贈的「目標導向編程」課程中有關
18!: 的部分。
下個 前個
字彙
索引
主選單