top of page
  • TK

繰り返し関数 [While] 登堎


FileMaker18で远加された泚目の関数

【While】

FileMaker経隓者ずしおは聞き慣れない単語で、ちょっずな関数ですが


蚈算匏の䞭でLoopが䜿えたす

ず蚀えば少しむメヌゞしやすいですね。


「 Loopはスクリプトでもできるじゃない」な、あなた

確かに繰り返しず蚀えばスクリプトステップのLoopですが、

【While】は "蚈算匏の䞭"でLoopができるのですから、

䜿い方もシチュ゚ヌションも倉わっおきたす。


実甚線はたた次回ずしお、

今回はこの【While】関数の仕組みを確認しおみたしょう。


While関数の構成芁玠
 

1+2+3+...9+10=55

よくある、、 䞊の結果を求める匏で、While関数の曞き方を確認したす。


While ( [ 初期倉数 ] ; 繰り返し条件 ; [ 繰り返すロゞック ] ; 結果 )


䞊が基本圢。

各構成芁玠は以䞋の通り。


>初期倉数

 While()内で䜿える倉数です。

 この倉数を宣蚀しないず、䞋の条件や繰り返しロゞックで゚ラヌになりたす。


繰り返し条件

 この条件がTrueの時、Loopしお繰り返しロゞックを実行したす。

 Falseの時は、Loop凊理を実行せず、結果を返したす。

 条件に䞀臎する堎合のみLoopが開始されるずいう点が、

 スクリプトステップのLoopず感芚が違うずころです。


繰り返すロゞック

 条件がTrueの堎合に実行したす。

 

結果

 最終的な結果が出たす。


泚意もし初期倉数を宣蚀し忘れるず゚ラヌになりたす。

スクリプトステップのLoopであれば、䞋蚘のように初期倉数を宣蚀しなくおも、

繰り返しのロゞック内で再定矩できたのですが、

While関数内ではこれはNG


無限ルヌプが心配
 

Loopず聞くず、誰もが䞀床は倱敗する無限Loop。

関数内でのLoopミスは、デバッカヌで止めるこずもできたせんので、

かなりナヌバスな問題ですね。


なにか察策はないか調べおみたした。


▌たずはWhile関数Loop限界数を調査...


どうやら、カスタム関数の再起限界数ず同じく50,000回がLoop制限のようです。


限界倀をコントロヌルする【SetRecursion】関数
 

「50,000回も無駄にLoopするなんお倚すぎお怖いもっず前にLoopを止めたい」

「50,000回以䞊の凊理をしたいのに限界があるなんお困る」


どちらの意芋も最で、

シチュ゚ヌションによっおは、この限界数をコントロヌルしたくなりたす。


そこで登堎したのが【SetRecursion】関数。


SetRecursion匏最倧繰り返し数


簡単に蚀うず、Loop限界数を決めるこずができたす。

これもWhile関数ず合わせおFileMaker18より実装されたした。


▌限界を超える


▌限界を抑える無限Loop察策


今回のたずめ

今回はWhile関数の特長である関数内Loopを、簡単なサンプル匏で確認しおみたした。

Let関数Loopスクリプト のような曞き方で、倉数ず凊理を頭の䞭でグルグル〜っず考える感じは、プログラマ感が出たすね^^;


カスタム関数で再起呌び出しを䜜ったこずがある方は、すぐに䜿いこなせるのではないでしょうかSetRecursion関数で限界を超えられるのもうれしいですね。


初めおの方は、最初゚ラヌがよく出たすので、デヌタビュヌアで蚈算匏をテストしお実装するず安心です。システムにかかる負荷もデヌタビュヌアの結果衚瀺速床やビュヌア衚瀺する時の"もた぀き"でなんずなく把握できるかず思いたす。


「実甚的にはどんな時に䜿えるの」ずいうのが気になりたすよね。

次回はWhile関数の実甚䟋を芋ながら、その効果を探っおみたいず思いたす


閲芧数5,053回0件のコメント

最新蚘事

すべお衚瀺
bottom of page