脚本文件能否拥有子函数或者子程序


#1

首先应该说明,我们没有全局变量和局部变量的概念。应该是与Matlab一样,所有的变量名和变量的数值都在工作空间,因此可以直接使用。
如果必要,用户可以使用所谓的子程序,主程序可以直接调用子程序的名字。但是我们没有子函数的改变,也就是不能通过子程序明来传递变量。

子程序的命名需要注意。根据我的测试,不能使用下划线,例如56331_fun.lsf;不能用数字开始,例如56331fun.lsf;也就是说子程序名必须用字符开头。主程序不受此限制。

使用时,只要将主程序和子程序放在同一个文件夹,在主程序中直接写没有后缀的子程序名就可以。例如子程序名字为fun.lsf:
X=linspace(-1,2,10x_fun);
Y=y_fun
sin(X);
plot(X,Y);

在主程序中相应位置直接写fun,就可以了:
for (i=1:3)
{
?x_fun=i;
?y_fun=i*5;
fun;
}
运行后可以看到
56331-main;#主程序名,不限制横线、字符开头
result:
1 #第一次循环
result:
5
result:
2 #第二次循环
result:
10
result:
3 #第三次循环
result:
15
工作空间显示

两个源文件在这里:56331-main.lsf (43 Bytes)

fun.lsf (54 Bytes)


想请教一下,Script脚本里能不能自定义函数?
#2

还是希望有子程序带参数的概念,因为这样可以隔开变量空间,最好还带返回值,
就是像其他比如c 和matlab中的函数定义一样,调用函数的时候带参数。
子程序定义为
fun.lsf:
functiion []=fun(x_fun,y_fun)
X=linspace(-1,2,10x_fun);
Y=y_fun
sin(X);
plot(X,Y);
#最好还带返回值


#3

抱歉,Lumerical 脚本目前不使用哑元变量,没有子函数的概念。也许以后还采用其它语言后可以。