Swiftで遊ぼう! on Hatena

あしたさぬきblogでやってた初心者オヤジのiOSプログラミング奮闘記がHatenaに来ました

Swiftで遊ぼう! - 218 - Developing iOS 8 Apps with Swift - Applying MVC アクセス権

Swiftで遊ぼう!の古い記事-> Life-LOG OtherSide

じゃあプロパティのプライベート、パブリックなどの設定をしよう。

パブリック設定をするということは、誰でもアクセスできて自由に改変できることになり、パブリック設定する製品と言えば、フレームワークや他人のためにコードしたオブジェクトぐらいだろう。

プライベートのものはプライベートにするのが原則。

じゃあ昨日のコーディングを次のようにしたらいいだろう。

class CalculatorBrain {
 
 private enum Op {
  case Operand(Double)
  case UnaryOperation(String, Double -> Double)
  case BinaryOperation(String, (Double, Double) -> Double)
 }
    
 private var opStack = [Op]()
    
 private var knownOps = [String: Op]()
    
 init() {
  knownOps["×"] = Op.BinaryOperation("×", *)
  knownOps["÷"] = Op.BinaryOperation("÷") {$1 / $0}
  knownOps["+"] = Op.BinaryOperation("+", +)
  knownOps["−"] = Op.BinaryOperation("−") {$1 - $0}
  knownOps["√"] = Op.UnaryOperation("√", sqrt)
 }
    
 func pushOperand(operand: Double) {
  opStack.append(Op.Operand(operand))
 }
    
 func performOperkoation(symbol: String) {
  if let operation = knownOps[symbol] {
   opStack.append(operation)
  }
 }
}

これで基本構造ができたと思います?

これじゃ駄目ですよね。計算をした結果を返す必要がある。

func evaluate() -> Double? {
// main coding
}

ここでオプショナルを使う理由は、最初に関数ボタンを押したら計算が進まず、nilを返すという仕組みを作る為です。

さて、この関数の実装に数学的な考え方が必要になる。

「Recursion(再帰法)」だ。私は初めて聞く言葉です。習ったことがあるかもしれませんが、今ではちんぷんかんぷん。

じゃあ今日はここまで。