set udfparms 命令示例

下面的示例展示了按值传递和引用传递变量的区别。

*** 按值传递内存变量***
clear
set talk off
wait 'press a key to pass by value' window
set udfparms to value
store 1 to gnx

*** gnx 的值没有更改***
@ 2,2 say 'udf value: ' + str(plusone(gnx))
@ 4,2 say 'value of gnx: ' + str(gnx)

*** 通过引用传递内存变量***
wait 'press a key to pass by reference' window
clear
set udfparms to reference
store 1 to gnx
*** gnx 的值改变了***
@ 2,2 say 'udf value: ' + str(plusone(gnx))
@ 4,2 say 'value of x: ' + str(gnx)
set udfparms to value

***这个 udf 给一个数加1 ***
function plusone
parameter gnz

gnz = gnz + 1
return gnz
*** udf 结束 ***


下面的示例和上面的一样,只是分别用括号和 @ 来表示按值和通过引用传递变量:

*** 按值传递内存变量***
clear
set talk off
wait 'press a key to pass by value' window
store 1 to gnx
@ 2,2 say 'udf value: ' + str(plusone((gnx)))
@ 4,2 say 'value of gnx: ' + str(gnx)

*** 通过引用传递内存变量 ***
wait 'press a key to pass by reference' window
clear
store 1 to gnx
@ 2,2 say 'udf value: ' + str(plusone(@gnx))
@ 4,2 say 'value of gnx: ' + str(gnx)

*** 这个 udf 给一个数加 1***
function plusone
parameter gnz
gnz = gnz + 1
return gnz
*** 结束***