Swiftで遊ぼう! on Hatena

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

Swiftで遊ぼう! - 213 - Developing iOS 8 Apps with Swift - More Xcode and Swift, MVC - 更に続く

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

Calculatorプロジェクトのコードの続きです。ちょっと気を抜くと理解できなくなりそうなところが大学の講義らしいですね。新しいトピックが次々出てくるんです。

今日のトピックは

  • switch
  • type型としての関数
  • 関数をあっという間に定義するクロージャ

ここの話の展開は速い!switchから関数、そしてクロージャーにあっという間に説明が進んでしまう。動画を繰り返して見ながら、The Swift Programming Language本を確認するのがいいだろう。

ちょっと今までの説明をしよう。詳しい手順はiTunesUでPaul Hegarty先生が体調を崩しガラガラ声で丁寧に説明しているので見て下さい。超必見ですよ。
f:id:yataiblue:20150131101025j:plain
Main.storyboardで上のようにUILabelとUIButtonを並べています。UILabelのインスタンスはdisplayで、部分的にコンストレイントを加えています(講義1でやりました)。ナンバーパッドはHIGの規定に合わせて並べていますが、スクリーンに合わせたコンストレイントの設定はしていません。それぞれのボタンのコーディングが終了してからレイアウトを調整していくからです。

まず、数字ボタンをプレスするとdisplayラベルに表示するコーディングを講義1でしました。

講義2に入ってから、数字ボタンを押してdisplayラベルに表示される数字を一時的に保存するために配列(Array)を利用しました。
アレーの解説:配列型(Array):Life-LOG OtherSide

var operandStack = Array()

上記の宣言で空のアレー、operandStackを作っています。この宣言は「[Double]()」でも構わないでしょう。

数字の区切りをリターンキー「⏎ 」で実現しているんですが、そのコーディングは非常に簡単。

講義1で長ったらしい変数を作りました。

var userIsInTheMiddleOfTypingNumber = false

Boolen型の変数ですが、「ユーザーがナンバーをタイプしている途中」という名前をつけてます。長いのですがコードの可読性を上げるための工夫です。そして、Xode6の優れたタイピング補填能力により「user」とタイプすれば候補として直ぐ画面に出てくるだろう。後はTabキーを押せばいいだなんですよ。理解しやすい長い変数名をつけられる英語圏デベロッパーにとって羨ましい環境ですよね。この変数がtrueなら「まだ数字のタイプ途中だよ」って考えなくても頭に入るもんね。

このuserIsInTheMiddleOfTypingNumberがTrueならdisplayへの数字表示が続き。falseになると区切りが入ってdisplayラベルに表示されていた数字はoperandStackに格納されるというシステムにしてやるんです。

リターンキー「⏎ 」をプレスしたときに惹起されるメソッドが次のコードです。

@IBAction func enter() {
userIsInTheMiddleOfTypingNumber = false
operandStack.append(displayValue)
println("operandStack = \(operandStack)")
}

さっきの変数をfalseにしてdisplayに表示されていたString型の数字をDouble型の数字に変換するdisplayValue(講義1で説明した)にしてからoperandStackに追加するだけだ。

あれ?最後のprintle()は何?って素人は考えるだろう。これはコーディングの途中でコードをランさせてちゃんと動いているかどうかコンソールで確認するテクニックなんです。一般的なデベロッパーには当たり前の作業でしょうが、私のような素人には目から鱗でした。こういう風にコンソールを利用するんですね。勉強になりました。

あれ、全然解説が進んでないけど、今日はこれでおしまし。