我是Scala的新手,我很难定义,或者更有可能将我的代码从Ruby转换为评估描述为波兰语符号的计算.fe(+ 3 2)或( - 4(+ 3 2))
我成功地将字符串解析为ArrayBuffer(+,3,2)或ArrayBuffer( - ,4,ArrayBuffer(+,3 2))的形式
当我尝试定义递归eval函数时,问题实际上就开始了,它只是将ArrayBuffer作为参数并"返回"一个int(评估应用程序的结果).
在基础案例中:我想简单地检查第二个元素是否是一个instanceOf [Int] &&第三个元素是instanceOf [Int]然后一起评估它们(取决于符号运算符 - 第一个元素)并返回int.
但是,如果任何元素是另一个ArrayBuffer,我只想将该元素重新分配给递归调用的eval函数的返回值.喜欢:存储(2)= eval(存储(2).(**这就是为什么我使用可变的ArrayBuffer**)
我得到的错误是:scala.collection.mutable.ArrayBuffer无法强制转换为java.lang.Integer
我当然不是在寻找任何复制和粘贴的答案,而是寻求一些建议和观察.建设性批评完全受到欢迎.
这是我仅用于添加*的测试代码
scala.collection.mutable.ArrayBuffer cannot be cast to java.lang.Integer
Run Code Online (Sandbox Code Playgroud) scala ×1