2019年7月21日日曜日

オーバーフローによるストップ処理

オーバーフロが生じた場合は、オーバーフローシングルトンのオーバフローステータスを見て、文字入力を受け付けないようにします。
    func push(_ s:String){
        if flow.overFlow { return }
        
    }// end NumberQueue.push
    func pop() {
        if flow.overFlow { return }
        
    }// end NumberQueue.pop
    func calc(_ char:Character){
        if flow.overFlow { return }

  }

オーバーフロのチェックは、各計算結果に対して行うだけです。エラー表示はオーバーフローオブジェクト側で実施します。

                        if var result = calQueue.push(nil,previousOperater){ // 演算子を投入し、演算結果を得る

                            // ----------------------------------
                            let ret = flow.checkOverFlow(result)
                            result = ret.retValString
                            // ----------------------------------

                            if let numberString = formattedNumberStringForPop(result){ //演算結果があれば整形して表示する
                                print (numberString)

で、計算の結果は以下のような感じです。
2
Operater5 *
Operater1 *=
4
Operater1 *=
16
Operater1 *=
256
Operater1 *=
65,536
Operater1 *=
4,294,967,296
Operater1 *=
E
18,446,744.0737

最後E表示のあと8桁のオーバーフロー数値を示すことができました。

ということで、UIなしで電卓の処理の実装は少しづ完成に近づいてきています。

0 件のコメント: