私はScalaには新しく、定義するのに苦労しています。また、ポーランド語の表記法で記述された計算を評価するためにRubyから自分のコードを翻訳しています。 (+、3,2)またはArrayBuffer( - 、4、ArrayBuffer(+、3 2))を構成する文字列を正しく解析しました。 ))ポーシング表記の評価関数
再帰的評価関数を定義しようとすると実際に問題が発生します。単純にArrayBufferを引数として受け取り、int(評価されたアプリケーションの結果)を返すだけです。 BASEケースに
: - とリターンint型 私は2番目の要素はINSTANCEOF [INT] & &第三の要素であれば、単純にチェックしたいINSTANCEOF [int]はその後、(第一要素サインオペレータに依存する)それらを一緒に評価しています。
しかし、いずれかの要素が別のArrayBufferである場合、その要素を再帰的にeval関数と呼ばれる戻り値に再割り当てしたいだけです。以下のような:。 ストレージは、(2)=のeval(ストレージ(2)(私は変更可能なArrayBufferを使用していますなぜ** ** thatsの)
エラー、私が手です: scala.collection.mutable.ArrayBufferをすることはできません私はもちろん、すべてのコピー&ペーストの答えのためではなく、いくつかのアドバイスや観察を捜しているわけではないがjava.lang.Integer
にキャスト。完全に歓迎 建設的な批判が。
これはテストですコード私は追加のためだけに使用しています*
def eval(Input: ArrayBuffer[Any]):Int = {
if(ArrayBuffer(2).isInstaceOf[ArrayBuffer[Any]]) {
ArrayBuffer(2) = eval(ArrayBuffer(2))
}
if(ArrayBuffer(3).isInstaceOf[ArrayBuffer[Any]]) {
ArrayBuffer(3) = eval(ArrayBuffer(3))
}
if(ArrayBuffer(2).isInstaceOf[Int] && ArrayBuffer(3).isInstanceOf[Int]) {
ArrayBuffer(2).asInstanceOf[Int] + ArrayBuffer(3).asInstanceOf[Int]
}
}
あなたは、評価のためにあなたが持っているもののコード貼り付けることができます関数?これにより、問題が発生している場所をより簡単に把握し、支援をより適切にすることができます。 – dhg