IDL中自定义过程与函数关键字参数说明

时间:2021-11-03 17:03:11

定义一个获取数据最大值的GetMax函数,和GetMax_2的过程,测试效果

PRO Test_function
a=1
b=2
c=3
;这里d为位置参数,可选
variable_1=GetMAX(a,b,c,d=1)
PRINT,'variable_1:',variable_1

;过程没有返回值,这里d为空
GetMax_2,a,b,c,variable_2
PRINT,'variable_2:',variable_2

;另外设置d的值为2
GetMax_2,a,b,c,variable_3,d=2
PRINT,'variable_3:',variable_3
END

;===================================

;这里的d有点像C#里面的构造函数,初始化数据
FUNCTION GetMax,a,b,c,d=d
arr=[a,b,c]
;判断位置参数是否为空,是则默认为0
IF (d EQ !NULL) THEN BEGIN
d=0
ENDIF
e=MAX(arr)+d
RETURN, e
END

;===================================

;过程无返回值,这里4个位置参数,一个关键字参数
PRO GetMax_2,a,b,c,e,d=d
arr=[a,b,c]
IF (d EQ !NULL) THEN BEGIN
d=0
ENDIF
e=MAX(arr)+d
END

运行结果

IDL中自定义过程与函数关键字参数说明

关键字参数可以灵活的修改程序,增强程序的可扩展性,当然我只是简单的写一下,实际的情况还得根据具体需求来