MATLAB - 导入自定义验证函数以立即在参数块中使用

问题描述 投票:0回答:1

我有一个函数文件

my_function.m
,它使用函数参数验证

function b = my_function(a)
    arguments
        a (1, 1) double {mustBeReal}
    end
    b = a + 1;
end

我在命名空间包中编写了一个 自定义验证函数(作为示例),因此其完全限定名称类似于

mypackage.foo.mustBeSomething

我希望能够立即导入名称

mustBeSomething
以在
arguments
块中使用。

import mypackage.foo.mustBeSomething;

但是 MATLAB 不允许我将其放置在任何正常的地方:

  • 将其放在第一行
    function
    关键字之前会导致 MATLAB 将
    my_function
    解释为局部函数
  • 将其放在
    function
    之后但在
    arguments
    之前的行中会导致 MATLAB 抱怨参数块必须先出现
  • 将其放在
    arguments
    关键字之后但在
    a
    行之前会导致 MATLAB 将
    import
    解释为参数名称

我真的没有办法只使用

mustBeSomething
,而不是通过导入使用完全限定名称吗?

function b = my_function(a)
    arguments
        a (1, 1) double {mustBeReal, mypackage.foo.mustBeSomething}
    end
    b = a + 1;
end
matlab syntax argument-validation
1个回答
0
投票

来自函数参数验证文档:

变量和函数访问的限制

参数块存在于函数的工作区中。使用 import 命令添加到函数范围的任何包、类或函数都会添加到参数块的范围。

所以你可以在函数代码块中使用

import
来与参数块一起使用。

function b = my_function(a)
    arguments
        a (1, 1) double {mustBeReal, mustBeSomething}
    end
    import mypackage.foo.mustBeSomething
    b = a + 1;
end
© www.soinside.com 2019 - 2024. All rights reserved.