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(再帰法)」だ。私は初めて聞く言葉です。習ったことがあるかもしれませんが、今ではちんぷんかんぷん。
じゃあ今日はここまで。