第二幅图的是嵌套函数(Nested Function)。
嵌套函数是在另一函数内部定义的函数,和普通的函数主要有以下几点差别:
1、函数必须以end结束。只要某个M文件中使用的嵌套函数,则该文件内所有的函数都必须以end结束——无论该函数是否为嵌套函数。
2、调用规则:
嵌套函数按照以下的规则调用:
(1)外层的嵌套函数的直接内层,例如varScope1可以调nestfun1,而nestfun1可以调用nestfun2,但varScope1不能调nestfun2;
(2)有相同父函数的同层嵌套函数(本例不存在);
(3)内层的函数可以调用任何外层的函数,例如,nestfun2可以调用nestfun1和varScope1。
其他函数调用时,只能调最外面一层的函数(varScope1),而不能调用调nestfun1和nestfun2。
3、变量作用域:
通常,函数的工作区只对其自身可见,其他函数不能访问。但对于嵌套函数而言,处于内层的函数可以访问外层函数的工作区(例如,nestfun2可以访问varScope1的局部变量x),反之则不可以。
追问谢谢。
另外,是不是第一幅图中A,B是函数名,而x,y是返回值,p1,p2是输入参数。第二幅图中varScope1等是函数名,无返回值和输入参数。
设out是返回值,name是函数名,in是输入参数,是不是一个函数定义,可以仅包含函数名,或者函数名和返回值,或者包括三者?
也就是说只有函数名是必须的,其他的可选,任意组合?
基本正确。作为一个函数,函数名当然是必需的,而输入和输出参数则都是可选的,可以都没有,可以只有一种,也可以都没有,一共有四种情况。
说错了一点,应该是【也可以都有】。