gpt4 book ai didi

matlab - 为所有函数生成“M-Lint 无法确定 是变量还是函数并假定它是函数”警告

转载 作者:行者123 更新时间:2023-12-01 15:37:35 26 4
gpt4 key购买 nike

背景
我最近根据 Is it possible to set matlab to validate reachable functions before running 打开了 M-Lint 警告“M-Lint 无法决定......是变量还是函数并假设它是函数”为了尝试检测拼写错误的变量名称。
在最新版本的 matlab 中,M-Lint 被重命名为代码分析器,但我使用的是 Matlab2007b。

所有函数似乎都在生成此警告,即使是在同一个 m 文件中的函数。例如在下面的代码中 needlessDelegate使用时生成此警告。
对于有效函数,是否可以避免此警告?还是我的函数以某种方式写错了?

function [biggest]=getBiggest(variable1, variable2)
biggest=needlessDelegate(variable1, variable2); %<-- needlessDelegate generates warning. 'M-Lint cannot decide whether <name> is a variable or a function and assumes it is a function'
end

function [biggest]=needlessDelegate(variable1, variable2)
if variable1>variable2,
biggest=variable1;
else
biggest=variable2;
end
end

'M-Lint cannot decide whether 'needlessDelegate' is a variable or a function andassumes it is a function'

最佳答案

你的函数没有写错。但是,此 MLint 检查不会按照我的想法(通过阅读您的其他问题)执行您想要的操作。这不是一个非常有用的检查 - 这就是它默认关闭的原因。

在你的行之前考虑一下

biggest=needlessDelegate(variable1, variable2);

您本可以使用命令 load myData.mat ,并且 .mat 文件可能包含一个变量 needlessDelegate .因此,在运行时之前,MLint 无法知道一般情况下哪些是函数,哪些是变量。

只有当 needlessDelegate 时才异常(exception)。是在调用之前定义的 - 例如,如果您在行之前使用命令 needlessDelegate = @(x,y) x+y; .然后你会看到 MLint 消息消失了。

如您所见,它通常不是一个非常有用的检查,这就是它默认关闭的原因。

也许这个例子也回答了你的另一个问题 - MATLAB 无法知道哪些东西可能是拼写错误或 undefined variable ,因为你可以随时使用 load 'poof' 东西存在。 ,在运行之前无法检查。

关于matlab - 为所有函数生成“M-Lint 无法确定 <name> 是变量还是函数并假定它是函数”警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21554924/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com