试着弄清楚我是否可以访问我们的Matlab脚本中使用的函数对象编程技术。这类似于.NET's Func type或Python's function objects。 Matlab是否为函数提供了第一类对象状态?
答案 0 :(得分:4)
Matlab确实有function handles可以传递给其他函数。作为一个示例,函数fzero将找到您给出的函数的过零作为其第一个参数。函数句柄可以存储在变量,单元格数组或结构中。 Matlab也有anonymous functions,类似于Python的lambda表达式。因此,似乎Matlab中的函数具有要考虑的所有属性first class。
一些随机的例子:
>> sq = @(x) x^2 - 2
sq =
@(x)x^2-2
>> fzero(sq, 1)
ans =
1.4142
>> class(sq)
ans =
function_handle
>> functions = {@(x) 2 * x, @(y) 3 * y, @exp}
functions =
@(x)2*x @(y)3*y @exp
>> functions{2}(10)
ans =
30
>> functions{3}(1)
ans =
2.7183