前回から、素(す)のSwift Playgroundsから少しだけ脱却して、「Answer」のテンプレートを選んで作成したプレイグラウンドからプログラミングを始めています。そのテンプレートには、やや原始的なものながら、プログラムとユーザーがやりとりするための機能が、一種のライブラリとして含まれています。それによって、show()とask()という大きく2つのグループに分けられるファンクションが使えるようになりました。これで、プログラムからユーザーに対して何かを表示する機能と、ユーザーの入力操作の結果をプログラムで読み取る機能が実現できます。
前回はユーザーが入力した2つの値を読み取って、それらを掛け合わせた結果を表示するというごく基本的な機能を試しました。今回は掛け算だけでなく、足し算、引き算、割り算といった、いわゆる四則演算もできるようにして、電卓的に使えるプログラムを作ります。
選択肢を示して選んでもらう
Answerテンプレートが含んでいる機能には、単純な数字や文字列を入出力するものだけでなく、ちょっとだけ高度なものも含まれています。それは日付を入力するものと、プログラムで示した選択肢の中から1つを選ぶというものです。前回にもその名前だけは紹介しましたが、前者はaskForDate()、後者はaskForChoice()というファンクションによって実現されています。
日付を入力するaskForDate()は、このファンクションを呼ぶだけでデイトピッカーを表示するのでインパクトは強いのですが、プロンプトとして表示する文字列以外の引数はなく、使い方はごく簡単です。
一方、選択肢を表示して選ばせるaskForChoice()は、一般的なピッカーを表示します。そこに表示する選択肢は引数として与えます。これは、今まで紹介した中では、もっとも複雑な引数を持つファンクションでしょう。そうは言っても、使い方はけっして難しくありません。引数は大きく2つ与えればよいのです。まず最初の引数は、プロンプトとして枠の中に表示する文字列です。これは省略することができます。2番目の引数は、選択肢を表す文字列の配列です。実例を示しましょう。
var selection = askForChoice("どれが欲しい?", options: ["MacBook Pro", "iPad Pro", "iPhone 7"])
これを実行すると、中に薄い文字で「どれが欲しい?」と書かれた枠と、その下には選択肢として「MacBook Pro」「iPad Pro」「iPhone 7」の3つがあるピッカーが表示されます。
この中から好きなものを選んで、枠の右側に表示される「Submit」をタップすれば、その文字列がこのファンクションの値として返され、結果的に変数selectionに代入されます。このあたりの仕組みはもはや説明する必要はないでしょう。
この連載の記事
- 第100回 SceneKitの物理現象シミュレーションとアニメーションをARKitに持ち込む
- 第99回 「物理学体」と「物理学場」を設定して物理現象をシミュレーション
- 第98回 SceneKitのノードに動きを加えるプログラム
- 第97回 いろいろな形のノードをシーンの中に配置する
- 第96回 SceneKitの基礎シーンビュー、シーン、ノードを理解する
- 第95回 現実世界の床にボールや自動車のモデルを配置する
- 第94回 ARKitを使って非現実世界との融合に備える
- 第93回 ARKitが使えるiPadを識別するプログラム
- 第92回 Swift Playgrounds 2.1での問題点をまとめて解消する
- 第91回 iPadの内蔵カメラで撮影した写真を認識するプログラム
- この連載の一覧へ