matlab - MATLAB如何确定表达式的有效性/检查括号是否平衡?
问题描述
如果您尝试运行缺少括号((
、)
、[
、或)的代码]
,脚本或函数将引发错误:{
}
错误:文件:XXX.m 行:1337 列:42
无效的表达。调用函数或索引变量时,请使用括号。否则,检查不匹配的分隔符。
它似乎在执行之前执行此操作。我将编辑器设置为“出错时暂停”,但与其他错误相反(例如引用不存在的变量),它不会“跳转”到出现错误的行。
这让我想知道。起初我以为,MATLAB 可能会计算所有类型的括号,并检查是否有与特定类型的闭括号一样多的开括号。然而,情况似乎并非如此:
错误标识正确的行和列。如上所述的过程将无法做到这一点 - 因为它在文件级别查看括号,而不是成对。
这将包括字符串中使用的括号,这当然可以是不平衡的。
我的问题:MATLAB 如何检查括号是否平衡,或者更一般地说,MATLAB 如何确定表达式的有效性?
解决方案
MATLAB 基本上checkcode
是即时运行的,在您键入时会产生那些红色的摆动,并且当您尝试运行带有不平衡括号和/或方/花括号的代码时确实会产生这些错误。checkcode()
只需edit checkcode
在命令窗口中输入,您就可以看到它的作用。我不会在这里粘贴它的代码,因为它可能是专有的,但帮助文件说:
要强制代码分析器忽略一行代码,
%#ok
请在行尾使用。这个标签后面可以跟注释。例如:unsuppressed1 = 10 % This line will get caught suppressed2 = 20 %#ok These next two lines will not get caught suppressed3 = 30 %#ok
所以它的代码分析器(原文如此)会进行检查。可能它每行运行一些类似正则表达式的检查。
如需更详细的答案,请直接联系 The MathWorks,因为其余部分大多是封闭源代码。
推荐阅读
- python - 如何将数组中的各个条目放入具有自己变量的数组中?
- c# - 访问仍在移动的文件导致的 IOException
- angular - 角度缓冲区事件,然后在不活动延迟后执行某些操作
- android - 跟踪应用程序在我点击后关闭但仍在后台运行我希望它留在主活动中
- c# - 在构建 Project2 之前在 Project1 上执行“dotnet publish”的正确方法是什么
- wordpress - 将文件上传到自定义文件夹 wordpress
- sql-server - 收缩无活动服务器的事务日志
- types - PLC编程:转换为相同大小的数据类型并返回更改实际值
- angular - APP_BASE_HREF 可以等待 promise 解决吗
- php - 将公共键的数据合并到同一个数组中