官术网_书友最值得收藏!

5.2.2 參量(Parameters)

序列可以調(diào)用其他序列作為子序列,通過參量可以將數(shù)據(jù)從調(diào)用方序列傳遞給子序列。參量的作用范圍比局部變量大一些,它類似于文本編程中函數(shù)的形參,每個序列都可以定義自己的參量。對于序列本身的步驟而言,參量的使用訪問和局部變量是沒有差別的。參量的創(chuàng)建和局部變量類似,同樣在變量窗格中,選擇在Parameters容器下方添加。參量是有方向性的,即調(diào)用方序列將數(shù)據(jù)通過參量傳遞給子序列。

【練習5-1】使用局部變量和參量

在本練習中,將要創(chuàng)建局部變量和參量,使用局部變量在同一個序列的步驟之間傳遞數(shù)據(jù),使用參量從調(diào)用方序列給子序列傳遞數(shù)據(jù)。

(1)打開序列編輯器,新建序列文件并將其保存為<Exercise>\Chapter 5\Locals and Parameters.seq。

(2)在變量窗格中新建兩個數(shù)值型局部變量Locals.a和Locals.Temp,其初始值為0。

(3)在序列窗格中選擇主序列,然后添加一個表達式步驟,在表達式中輸入“Locals.a=2”。

(4)再添加一個表達式步驟,在表達式中輸入“Locals.Temp=Locals.a+2”。

(5)在序列窗格中新建序列,并命名為“SubSequence”。選中SubSequence,然后在變量窗格Parameters容器下新建一個數(shù)值型參量frequency(初始值為0)。

(6)回到主序列,添加調(diào)用序列步驟,在步驟設(shè)置窗格“模塊”頁面中,勾選“Use Current File”選項,然后在序列下拉列表中選擇“SubSequence”,這時會在參量一欄自動列舉出SubSequence中所有的參量。在“Value”欄輸入“Locals.Temp”,注意“How Passed”中數(shù)據(jù)的傳遞方式是“by reference”。配置完成后,調(diào)用序列步驟的設(shè)置如圖5-3所示。現(xiàn)在主序列應(yīng)該如圖5-4所示。

圖5-3 步驟設(shè)置窗格(模塊頁面)

圖5-4 主序列

(7)在序列窗格中選擇“SubSequence”,然后在步驟列表窗格中添加一個消息對話框步驟,在消息表達式中輸入“"The value of parameter frequency is"+Str(Parameters.frequency)”。

(8)在消息對話框步驟之后添加一個表達式步驟,在表達式中輸入“Parameters.frequency+=2”。SubSequence序列現(xiàn)在應(yīng)該如圖5-5所示。

圖5-5 SubSequence序列

(9)切換回主序列,在序列調(diào)用步驟后添加一個消息對話框步驟,在消息表達式中輸入“"Modified frequency value is"+Str(Locals.Temp)”。

(10)保存序列,通過菜單命令“ExecuteRun MainSequence”執(zhí)行序列。觀察前后兩次消息對話框彈出的結(jié)果。

在執(zhí)行SubSequence序列的消息對話框時,顯示參量frequency的結(jié)果為4;接著在執(zhí)行主序列的消息對話框時,顯示結(jié)果為6,這其中有哪些數(shù)據(jù)的傳遞?在主序列中有兩個局部變量(a和Temp),主序列中的任意步驟都可以訪問它們,在表達式步驟中分別對a和Temp進行了賦值,很容易得知Temp的值為4。在序列調(diào)用步驟中,采用傳遞的方式,把Locals.Temp的地址傳遞給了Parameters.frequency,對任何一方值的修改都會同時更新這兩個變量。所以在SubSequence中,消息對話框顯示的值應(yīng)該為4;隨后,Parameters.frequency的值加2,這樣frequency的值變?yōu)?;最后序列執(zhí)行到主序列的消息對話框時,顯示Locals.Temp的值也就變?yōu)?。

在范例資源的第5章練習中,例程<Exercises>\Chapter 5\Locals and Parameters-solution.seq完成的是上面的練習,讀者可以通過菜單命令“ExecuteRun MainSequence”運行該范例并觀察結(jié)果。

主站蜘蛛池模板: 抚远县| 娄底市| 香格里拉县| 莒南县| 咸宁市| 涡阳县| 革吉县| 永济市| 徐闻县| 海南省| 榆社县| 吴江市| 东阳市| 蓬溪县| 巫山县| 台湾省| 东城区| 都兰县| 新和县| 罗城| 井陉县| 山西省| 苏尼特左旗| 鄂托克旗| 永定县| 河曲县| 哈巴河县| 樟树市| 云龙县| 望城县| 太湖县| 调兵山市| 绵竹市| 诏安县| 吉木萨尔县| 井研县| 东丽区| 邛崃市| 海门市| 泊头市| 五河县|