2014-12-22 138 views
0

我知道在Maple中傳遞參數的方式總是通過值,所以我想知道是否有方法通過引用在Maple過程中傳遞參數。 我已閱讀了關於REF標識符的一些信息,但我還沒有很好的理解。 有人知道這件事嗎?Maple通過引用傳遞參數

回答

0

你提到的REF很可能只是`define_external中的參數限定詞,用於鏈接到Maple內核和解釋庫之外的編譯函數。對於Maple程序,它不提供更廣義的傳遞引用。

在Maple rtables(矩陣,向量,數組)和表通過引用傳遞,允許在這些可變結構上的就地語義。

過程調用的其他參數大多是通過值完成的。也就是通過名稱(變量)的值。在Maple的過程調用的正常評估規則中,傳遞的名稱將在前面進行評估,並且它們的值將成爲過程參數。

但是,如果名稱在未評估報價(單引號)內傳遞,那麼參數只是名稱而不是其值。那麼這個名字在過程調用中可用。該程序甚至可以分配給該名稱(產生副作用)。或者程序可以做另一次評估,以獲得價值。所以,在這種情況下,參數是按名稱傳遞的,這是通過引用傳遞的方式。

獲得相同效果的其他方法包括構造過程定義,以便參數按名稱而非值傳遞。在這種情況下,當程序被調用時不需要額外的評估報價。

請注意,下面將如何調用p1p2。如果用不同類型的參數調用它們,您也可以試驗發生了什麼(各種錯誤消息)。

p1 := proc(x) 
     local y; 
     y := eval(x); 
     print(x, y); 
     x := y^2; 
     return NULL; 
     end proc: 

m := 4; 
           m := 4 

p1('m'); 
           m, 4 

m; 
           16 

p2 := proc(x::uneval) 
     local y; 
     y := eval(x); 
     print(x, y); 
     x := y^2; 
     return NULL; 
     end proc: 

m := 4; 
           m := 4 

p2(m); 
           m, 4 

m; 
           16 
+0

非常詳盡..謝謝! –