「ショートカットの入力」をうまく使います.
正攻法かはなんとも…
※価格は記事執筆時のものです. 現在の価格はApp Storeから確認ください.
レビュー時のiOSバージョン : iOS15.1
スポンサーリンク
写真を表示する方法3種類
「ショートカットの入力」は、別のレシピを呼び出すときなどに渡すことのできる変数です.
そのため自己完結するレシピでは「ショートカットの入力」はずっと空のままです.
しかしショートカットでは「ショートカットを実行」で自分自身を呼び出すことができます、このとき入力として渡した値は「次回」のレシピにおける「ショートカットの入力」に代入されます.
この性質を利用して、通常のループ処理に加えて特定条件でデータを引き継いたり、あるいはクリアすることを考えます.
レシピ
参考例として、以下の仕様でレシピを作ってみます.
- 引き継ぐデータとして「辞書」アクションを使う
- 辞書のキーに加え「クリア」から一つ選択
- 辞書のキーを選んだ場合、そのキーの値を10倍、「クリア」の場合は辞書をクリア
- 3の状態の辞書を入力として「ショートカットを実行」でループ
まず「辞書」アクションを追加し(名前は適当にdictとしています)、適当なキーと数の組み合わせを作っておきます.
辞書でなくとも可能です.
「ショートカットの入力」に値が存在するかどうかでif文を適用します.
まず任意の場合、つまり「ショートカットの入力」が空でない場合です.
このときは辞書dictをこの「ショートカットの入力」に上書きします.
続いてdictのキーと「クリア」という文字を「テキスト」アクションに並べ、分割します.
これでdictにあるキーと「クリア」という文字によりリストが出来上がります.
上の分割テキストを使って「リストから選択」で一つ選びます.
選択したものがdictのキーである場合とそうでない(「クリア」を押した場合)で場合分けします.
まずキーを選択した場合.
このときは仕様に従い、選択した項目をキーとするdictの値を10倍してdictを上書きします.
「結果を表示」は「ショートカットの入力」やdictがどう変化したかを確認するものです.
その他の場合、つまり「クリア」を押した場合は変数dict(辞書ではない)をクリアします.
最初のif文のその他、つまり「ショートカットの入力」が空だった場合は今回は何もしません.
このifを終えたら最後に「ショートカットを実行」でこのレシピ自身を実行します.
画像では見えていませんが「ショートカットの実行」のオプションである「入力」には変数dictを入れておきます.
実行
実際に実行してみます.
辞書のキーいずれかを選択すると、対応するキーの値が(今回は)10倍されます.
ここで既に「ショートカットの入力」に値が入っていますが、これは今回のレシピだとこの処理が2週目だからです(後で解説します).
「ショートカットを実行」で変数dictを返しているため、直前のdictに辞書が代入されていれば「ショートカットの入力」にその辞書が代入された状態で再実行される、つまり「引き継ぎ」が起こります.
「クリア」を選択すると変数dictの値が削除されるため、次に実行される際はこれが「ショートカットの入力」として代入されるため、「ショートカットの入力」が空の状態となります.
フローチャート
今回のレシピをフローチャートにしたのが上の画像です.
人間の目には見えませんが1週目は「ショートカットの入力」が空であるため、レシピに直置きされている、つまり初期状態の辞書が代入された変数dictを入力としてループします(①).
そのため2週目はこのdictが「ショートカットの入力」に代入されるため、辞書のキー+「クリア」の選択画面に移行します.
キーのいずれかを選択した場合は仕様に基づいて処理し、更新されたdictを入力として再び「ショートカットを実行」でループします(②).
「クリア」を選択した場合は、変数dictを空にした状態でこれを入力として「ショートカットを実行」でループします(③).
この場合でのループ後の「ショートカットの入力」は空であるため、最初のif文はNoとなり、①で移行し、初期状態の辞書を入力として再ループすることでまた②・③への選択肢へ移動します.
"cleared"と書かれた「コメント」アクションは①の過程に存在します.
上の説明により、以下の条件でここを必ず通ります.
- 1周目
- ③へ進んで再ループしたとき
応用:リセットつきカウンター
上の例よりスッキリしているのでこっちのほうがわかりやすいかもしれません.
初期値を0とし、「1足す」、「0にリセットする」だけの簡単なカウンタです.
〆
「ショートカットを実行」で変数にパラメタを渡すことがヒントになります.
今回初期値として辞書を直接起きましたが、当然メモ帳やファイルアプリから読み込んでも良いです.
記録したものを改めて初期値とすれば常に変化するデータに対して処理が可能になります.
次回はこれを使った実用的なレシピを紹介します.