主要内容

嵌套函数

嵌套函数是什么?

一个嵌套函数是一个函数是完全包含在父函数。任何函数在程序文件中可以包含嵌套的函数。

例如,这个函数命名包含一个嵌套函数命名nestedfx:

函数父disp (“这是父函数”)nestedfx函数nestedfx disp (“这是嵌套函数”)结束结束

嵌套函数之间的主要差异和其他类型的函数可以访问和修改的变量定义在父母的功能。结果:

  • 嵌套函数可以使用变量作为输入参数传递的不明确。

  • 在父函数,您可以创建一个包含数据处理嵌套函数嵌套函数运行所必需的。

要求嵌套函数

  • 通常,不需要一个功能结束声明。然而,任何函数嵌套在一个程序文件,所有文件必须使用一个函数结束声明。

  • 你不能定义一个嵌套函数在MATLAB中的任何一个®程序控制语句,如如果/ elseif /,switch / case,,,或try / catch

  • 你必须调用一个嵌套函数直接通过名称(不使用函数宏指令),或者使用一个函数处理创建使用@操作符(而不是str2func)。

  • 所有嵌套的函数或变量的函数必须显式地定义包含它们。也就是说,您不能调用一个函数或脚本,该脚本将值赋给变量,除非这些变量已经存在于工作区功能。(有关更多信息,请参见解决错误:试图添加变量静态工作区。。)

父母之间共享变量和嵌套函数

一般来说,一个函数中的变量空间不可用于其他功能。但是,嵌套函数可以访问和修改变量的工作区函数包含它们。

这意味着一个嵌套函数和函数包含它可以修改相同的变量没有传递变量作为参数。例如,在每一个功能,小说main2主函数和嵌套函数可以访问变量x:

函数小说x = 5;nestfun1函数nestfun1 x = x + 1;结束结束
函数main2 nestfun2函数nestfun2 x = 5;结束x = x + 1;结束

当父函数不使用一个给定的变量,该变量仍然是当地的嵌套函数。例如,在这个函数命名主要,两个嵌套的功能有自己的版本的x不能相互作用:

函数主要nestedfun1 nestedfun2函数nestedfun1 x = 1;结束函数nestedfun2 x = 2;结束结束

函数返回输出参数为输出变量的工作区。然而,父函数只有变量为嵌套函数的输出是否显式地请求。例如,这个函数parentfun有变量y在其工作空间:

函数parentfun x = 5;nestfun;函数y = nestfun y = x + 1;结束结束

如果你修改代码如下,变量z在工作空间的parentfun:

函数parentfun x = 5;z = nestfun;函数y = nestfun y = x + 1;结束结束

使用处理存储函数参数

嵌套函数可以使用变量三个来源:

  • 输入参数

  • 嵌套函数内定义的变量

  • 变量定义在一个父函数,也称为外部作用域变量

当您创建一个函数处理为一个嵌套函数,处理门店不仅函数的名称,而且外部作用域的变量的值。

例如,创建一个函数在文件命名makeParabola.m。这个函数接受几个多项式的系数,并返回一个句柄嵌套函数,计算多项式的价值。

函数p = makeParabola (a, b, c) p = @parabola;函数y =抛物线(x) y = x *。* x ^ 2 + b + c;结束结束

makeParabola函数返回一个句柄抛物线功能,包括值系数一个,b,c

在命令行中调用makeParabola函数系数的值1.3,。2,30.。使用返回的函数处理p评估特定点的多项式:

p = makeParabola (1.3。2、30);X = 25;Y = p (X)
Y = 847.5000

许多MATLAB函数接受函数处理输入评估函数的范围值。例如,情节的抛物型方程-25年+ 25:

fplot (p, -25, 25)

您可以创建多个处理的抛物线函数,每次使用不同的多项式系数:

firstp = makeParabola (0.8, 1.6, 32);secondp = makeParabola (3、4、50);范围=(-25年25);图保存fplot (firstp、范围)fplot (secondp、范围、“:”)举行

可见性的嵌套函数

每个函数都有一个确定的范围,也就是说,一组其他功能它是可见的。一个嵌套函数可用:

  • 从上面的立即水平。(下面的代码的功能一个可以调用BD,但不CE。)

  • 从函数嵌套在同一个父函数在同一水平。(函数B可以调用D,D可以调用B。)

  • 从一个函数在任何低水平。(函数C可以调用BD,但不E。)

    函数一个(x, y)%的主要功能B (x, y) D (y)函数B (x, y)%嵌套在一个C (x) D (y)函数C (x)% B嵌套在D (x)结束结束函数D (x)%嵌套在一个E (x)函数E (x)在D %嵌套disp (x)结束结束结束

扩展范围的最简单的方法是创建一个嵌套函数函数处理并返回它作为输出参数,如图所示使用处理存储函数参数。只有函数可以调用一个嵌套函数可以创建一个句柄。

相关的话题