我正在做 CS193P 的作业 2 - 斯坦福的 IOS 编程课程。我想知道的一件事是calculatorBrain 应该如何接受和运行一个存储的程序,一个程序是一个数组或操作数和操作的堆栈。
假设我们要执行以下计算:2、3、4、+、*
如果您将其输入计算器,则会发生以下情况:
2 3 4 一次一个地被压入堆栈,并为每个调用 runProgram ,它只是将数字从堆栈中弹出并返回它的值,该值被压入堆栈。
你按下 +,runProgram 弹出这个并看到它必须添加它所做的前 2 个项目,并将结果推送到现在包含 2、7 的堆栈上。你按下 *,堆栈现在包含 14。
但是我看不到如何将包含 (2, 3, 4, +, *
) 的数组传递给大脑(讲师稍后说您可以将程序传递给 runProgram 类方法并获得结果,而不必实例化一个大脑对象),因为 runProgram 将首先尝试执行顶部操作数 ie*
并为此将接下来的两个对象从堆栈中取出并尝试将它们相乘并将结果推回堆栈。这两个对象是“+”和“4”,它们不起作用。
现在教练做这件事的时间比我长得多,因为我认为我错过了一些东西,但我不确定是什么。
有任何想法吗?