什么时候需要 eval 函数?
When is the eval function necessary?
我刚刚阅读了 following article from MathWorks which describes why it is important to avoid the eval
函数并列出了 eval
的许多常见用途的替代方法。
看完这篇文章,我觉得eval
这个功能既没有用也没有必要。所以,我的问题是:当 是 时 eval
函数是必需的吗?
我只发现 eval
的一个有用案例,然后是 evalc
变体:当调用带有内置命令行回调的函数时(例如没有 ;
的行或使用 disp
个调用),您无法修改。例如,当你有一些混淆函数将大量内容转储到你的命令时 window。在这种情况下,最好尝试获取源代码以根据您的需要进行修改,因为使用 evalc
会扰乱您的性能。不然我还没找到eval
最好解的情况
我写了一个详尽的答案,详细说明了为什么你应该尽量避免 eval
在这里:
我在尝试创建具有不同名称的多个数组时已经使用了 eval。这不是真的推荐,但它适用于我的特定应用程序。例如,如果我想要 N 个具有特定名称 "matrix1" "matrix2" .. "matrixN" 的矩阵,一种解决方案是手动将这些输入为 "matrix1 = something" ... "matrixN = somethingelse"。如果 N 真的很大,这就不理想了。使用 eval ,您可以设置一个 for 循环,在每个循环中更改矩阵的名称,并根据相同的 N 值计算一些值。
当然,理想情况下将它们保存到一个单元格中会更好,但我需要我描述的格式的数组。
我刚刚阅读了 following article from MathWorks which describes why it is important to avoid the eval
函数并列出了 eval
的许多常见用途的替代方法。
看完这篇文章,我觉得eval
这个功能既没有用也没有必要。所以,我的问题是:当 是 时 eval
函数是必需的吗?
我只发现 eval
的一个有用案例,然后是 evalc
变体:当调用带有内置命令行回调的函数时(例如没有 ;
的行或使用 disp
个调用),您无法修改。例如,当你有一些混淆函数将大量内容转储到你的命令时 window。在这种情况下,最好尝试获取源代码以根据您的需要进行修改,因为使用 evalc
会扰乱您的性能。不然我还没找到eval
最好解的情况
我写了一个详尽的答案,详细说明了为什么你应该尽量避免 eval
在这里:
我在尝试创建具有不同名称的多个数组时已经使用了 eval。这不是真的推荐,但它适用于我的特定应用程序。例如,如果我想要 N 个具有特定名称 "matrix1" "matrix2" .. "matrixN" 的矩阵,一种解决方案是手动将这些输入为 "matrix1 = something" ... "matrixN = somethingelse"。如果 N 真的很大,这就不理想了。使用 eval ,您可以设置一个 for 循环,在每个循环中更改矩阵的名称,并根据相同的 N 值计算一些值。
当然,理想情况下将它们保存到一个单元格中会更好,但我需要我描述的格式的数组。