请参阅以下近似我的情况的伪代码片段:
function foo () {
for ( velocity=0; velocity<100; velocity++ ) {
root1 = computeRoot1();
root2 = computeRoot2();
// do a bunch of computation with root1
// if result of computation is undesirable, do computations again with root2
}
所以,基本上我想在 for
循环体中使用 root1
进行计算,然后使用 root2
if root1
的计算结果无效。
我的第一直觉是显而易见的方法,将计算包装在帮助函数中,但我不确定这是最清晰的方法。我正在尝试在代码中实现信息的良好搭配,而对最多执行两次(每次迭代)的代码的函数调用会破坏该目标,而不会为我的代码提供大量简洁性。
我在想也许是一个for
循环,例如:
for ( root=root1; root1IsInvalid==true || bothRootsInvalid==true; root=root2 )
或具有类似功能的while
。但我当然愿意接受其他建议
作为阅读此代码的人,哪种方法会使它对您来说最具可读性和简洁性?
顺便说一句,我正在用 JavaScript 编写这个特定的函数,但与语言无关的解决方案会很棒。
编辑:澄清的代码片段
最佳答案
您有几种基本方法:
- 将值放入数组中,并使用
for
循环对数组中的每个项目运行相同的代码,也许在满足某些条件时停止迭代。 - 创建一个执行计算的函数,然后只需编写在第一个函数上调用该函数的代码,然后在第二个函数上调用该函数,依此类推。
- 创建一个
while
循环并重复您的代码,直到满足某些条件。
第一个选项更容易扩展到 N 个项目。对于仅两个项目,第二个选项可能更简单。
您可以使计算函数成为本地函数(在当前正在执行的函数内部声明和使用),这样它就不会添加到全局命名空间,并且您的代码仍然更加封装。
我也不确定你打算用这一行做什么:
root1, root2 = computeRoots();
但是,它只是将值分配给 root2
并且看起来您可能希望在这些前面使用 var
将它们定义为局部变量。
关于javascript - 在复杂例程中使用多个值的最简洁方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14097507/