【发布时间】:2019-07-14 08:54:44
【问题描述】:
如果您尝试运行缺少括号的代码((、)、[、]、{ 或 }),脚本或函数会抛出错误:
错误:文件:XXX.m 行:1337 列:42
无效的表达式。调用函数或索引变量时,请使用括号。否则,检查不匹配的分隔符。
它似乎在执行之前执行此操作。我将编辑器设置为“出错时暂停”,但与其他错误相反(例如引用不存在的变量),它不会“跳转”到出现错误的行。
这让我很疑惑。起初我以为,MATLAB 可能会计算所有类型的括号,并检查是否有与特定类型的闭括号一样多的开括号。然而,情况似乎并非如此:
-
错误标识了正确的行和列。上述过程无法做到这一点 - 因为它在文件级别查看括号,而不是成对的。
-
这将包括字符串中使用的括号,这当然可以是不平衡的。
我的问题:MATLAB 如何检查括号是否平衡,或者更一般地说,MATLAB 如何确定表达式的有效性?
【问题讨论】:
-
除非由编写 MATLAB 应用程序的人提供,否则任何答案都可能是纯粹的猜测,因此这个问题“主要基于意见”是题外话。您可以看到,在您编写代码时,MATLAB 编辑器会在括号问题下划线,它清楚地知道它们发生在哪里,而无需编译。
-
MATLAB 在开始执行之前解析代码。这意味着所有的语法都必须是正确的,而不仅仅是有正确数量的括号。你应该阅读解析。这是一个非常有趣的话题,有很多东西要学。
标签: matlab validation