277 Views
February 25, 25
スライド概要
Notes/Dominoの@関数を取り上げながら、調べたこと、経験したことを雑談してゆきます。
第46回は @Elements、@Count、@For、@GetField について
@ -notes knows community- 2023/06/15 @関数Talk 第46回 公開版 @ Talks around @Functions in Notes and Domino ✔ @Elements ✔ @Count 46th ✔ @For ✔ @GetField 阿部 覚 (tw:) @abesat
@ 前回ご紹介した 「全フィールドの着せ替えフォーム」の つづきをやるのですが、 前回放談した@DocFields のつづきではなく 別の関数のお話に移行しちゃいます @ 要は「全フィールドの着せ替えフォーム」に使う 残りの関数のお話をしようということです
@ @Elements @ で放談
@ @Elements ヘルプによれば 「リスト内の文字列、数値、日時値の数を計算します。こ の関数は、常にリスト内の要素の数を示す数値を返しま す。」 @
@要するに、その属性に関わらず、 リストに「何個ある?」を返してくれる たとえば、これはいくつ? 『1, 2, 1』 カンマで分離された数値 『いちご10個 にんじん1本 サンダル2足 ヨット3艘 ごましお4粒 ロケット5台』 @ 改行で分離されたテキスト (これの出典がわかる方、口にしちゃうと年齢バレると思います~)
@答えは、3 と 6 簡単ですね ヘルプには、なんか、こんなことも書いてあります 「フィールド値がヌル文字列である場合は、@Elements(list) は数値 0 を返します。@Count は、フィールド値がヌル文字 列であるが、またはリスト値でない場合に 1 を返します。」 @
@ @Count @ も、ついでに放談
@ @Count それ自身のヘルプにもこう書かれています 「リスト内の文字列、数値、日時値の数を計算します。こ の関数は、常にリスト内の要素の数を示す数値を返しま す。 @ @Elements と似ていますが、評価する値がリストではない 場合やヌル文字列の場合に 0 ではなく 1 を返す点が異なり ます。」
@ @Count 「リスト内の文字列、数値、日時値の数を計算します。こ の関数は、常にリスト内の要素の数を示す数値を返しま す。 前半部は@Elements と一言一句全く同一です @Elements と似ていますが、評価する値がリストではない 場合やヌル文字列の場合に 0 ではなく 1 を返す点が異なり ます。」 後半部は@Elements との違い 要は「たとえ何にも無くても1を返すよ」 えっ、そんなバカな…? @
@で、比べてみました 式 ➡ 戻り値 で表示しています まずは通常パターン @
@次に…相違パターン ここで、 tmp は、この式の中でいきなり初登場した変数 つまり、まだ何も値がないです。 @Elements は、ないから 0 @Count は、ないけど 1 ? @
@次に、これは? ヌル値が3つは、いずれも3を返します でも、ヌル値が1つだけになると @ @Elementsの方は、1つあるのに0と云っている…?
@ 前掲の tmp も値は "" つまり 👆👇 どちらも実質同内容です ここでようやく、2つの関数の違いが のみこめてきた感じがするのではと 「ない」と見るか 「ヌル値が1つある」と見るかの 違いだろう、と思います @
@ @For@ で放談
@ @For ヘルプによれば 「条件が True の間、ステートメントを繰り返し実行しま す。」 構文はこんな感じ 変数に 初期値 実行条件 @ 変数変える ふつうは増やす @For( initialize ; condition ; increment ; statement ; ... ) 繰り返しやりたいことはここに書くよ
@ たとえば、あることを1から10まで繰り返したい場合は 初期値 実行条件 変数変える ふつうは増やす @For(n := 1; n <= 10 ; n := n + 1; や り た い こ と ; W h a t w e w a n t t o d o ); @ 他の関数ではあまり見かけない 引数内での変数の代入が"標準の使い方"であることに、 初めてみたとき、私は正直、 違和感も…ありました
@ そうなると 逆らいたくなるのが性 標準でなさそうなことをやったらどうなるかを 確かめてみたくなるのが、世の理でございます 標準的に記すと、こんな式 が、あるとします 結果の値 @ 式
@式をこんな風に変えても、結果は同じでした 初期値は、@For より前に指定しちゃっても、大丈夫♬ @
@じゃあ、こんなことをしちゃった場合は? 3番目と4番目の引数を交換してしまったら、式は動くかな ? @
@答え式は動きました、けど、結果の値がこう変わりました 結果の値 @
@どうやら、この関数の本質…骨組みって こういうことではないかと思います ● 常に👇この順序で動作する 1番目の引数 2番目の引数 4番目以降の引数 3番目の引数 2番目の引数 4番目以降の引数 3番目の引数 2番目の引数 4番目以降の引数 3番目の引数 : @For( initialize ; condition ; increment ; statement ; ... @ ) ● 2番目の引数(条件/condition)がFalseになったら動作終了 これ以外の機能はないと思います (初期値/initializeと増分/incrementは 機能ではなく、単なるおすすめ・想定の使い方かと)
@そろそろ、前回のつづき とりあえず全フィールドの中身を テキスト表示する着せ替えフォーム もうひとつ、触れておきたい関数 に戻りたいのですが 残ってました @
@ @GetField @ で放談
@ @GetField ヘルプによれば 「指定されたフィールドの値を返します。」 たとえば @GetField("Title") と、やればTitleフィールドの値が @GetField("Status") と、やればStatusフィールドの値が @GetField("Date") と、やればDateフィールドの値が @ 戻り値になります
@ でも、それって @GetField("Title") @GetField("Status") @GetField("Date") と、わざわざ関数使わなくても Title Status Date だけで、コト足りるよね? つまり、@GetField を実際に使うのは、 フィールドの名前が特定できないときが中心 変数などと組み合わせて 使うのがメインになります @ と、これだけ申しておけば次へ進めるかな
@ 前回のおさらい お見せしようとしていたのは どんなフォームで作られた文書でも とりあえず全フィールドの中身を テキスト表示する着せ替えフォーム @ でした
@ ひとまず文書内の全フィールドの IDと値を表示しちゃうフォームです @
@ フォームにフィールドはひとつも置かず たったひとつの計算結果テキストを置きまして そこへ前回使用した@DocFieldsや、 今回の各関数を使った式を入れます @
@こんな式でした @
@こんな式でした、やや粗削りですが😏 @DocFieldsは変数へ代入 @DocFieldsの要素数分を@Forで回し @ フィールド名とフィールド値を追加 フィールド値は@GetField したら、属性が不定なので@Textをかけ、 複数値の場合に備えカンマで区切ります
@ 今回もお付き合い ありがとうございました 😀 @