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!: 的部分。


下個前個字彙索引主選單