202306FunctionTalkInNotesKnowsWorkshop46th

277 Views

February 25, 25

スライド概要

Notes/Dominoの@関数を取り上げながら、調べたこと、経験したことを雑談してゆきます。
第46回は @Elements、@Count、@For、@GetField について

profile-image

Notes/Domino worker - Formula language ♡er, #IBMChampion '15 & #HCLAmbassador '20 - '23, Nature Game (Sharing Nature) leader

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

ダウンロード

関連スライド

各ページのテキスト
1.

@ -notes knows community- 2023/06/15 @関数Talk 第46回 公開版 @ Talks around @Functions in Notes and Domino ✔ @Elements ✔ @Count 46th ✔ @For ✔ @GetField 阿部 覚 (tw:) @abesat

2.

@ 前回ご紹介した 「全フィールドの着せ替えフォーム」の つづきをやるのですが、 前回放談した@DocFields のつづきではなく 別の関数のお話に移行しちゃいます @ 要は「全フィールドの着せ替えフォーム」に使う 残りの関数のお話をしようということです

3.

@ @Elements @ で放談

4.

@ @Elements ヘルプによれば 「リスト内の文字列、数値、日時値の数を計算します。こ の関数は、常にリスト内の要素の数を示す数値を返しま す。」 @

5.

@要するに、その属性に関わらず、 リストに「何個ある?」を返してくれる たとえば、これはいくつ? 『1, 2, 1』 カンマで分離された数値 『いちご10個 にんじん1本 サンダル2足 ヨット3艘 ごましお4粒 ロケット5台』 @ 改行で分離されたテキスト (これの出典がわかる方、口にしちゃうと年齢バレると思います~)

6.

@答えは、3 と 6 簡単ですね ヘルプには、なんか、こんなことも書いてあります 「フィールド値がヌル文字列である場合は、@Elements(list) は数値 0 を返します。@Count は、フィールド値がヌル文字 列であるが、またはリスト値でない場合に 1 を返します。」 @

7.

@ @Count @ も、ついでに放談

8.

@ @Count それ自身のヘルプにもこう書かれています 「リスト内の文字列、数値、日時値の数を計算します。こ の関数は、常にリスト内の要素の数を示す数値を返しま す。 @ @Elements と似ていますが、評価する値がリストではない 場合やヌル文字列の場合に 0 ではなく 1 を返す点が異なり ます。」

9.

@ @Count 「リスト内の文字列、数値、日時値の数を計算します。こ の関数は、常にリスト内の要素の数を示す数値を返しま す。 前半部は@Elements と一言一句全く同一です @Elements と似ていますが、評価する値がリストではない 場合やヌル文字列の場合に 0 ではなく 1 を返す点が異なり ます。」 後半部は@Elements との違い 要は「たとえ何にも無くても1を返すよ」 えっ、そんなバカな…? @

10.

@で、比べてみました 式 ➡ 戻り値 で表示しています まずは通常パターン @

11.

@次に…相違パターン ここで、 tmp は、この式の中でいきなり初登場した変数 つまり、まだ何も値がないです。 @Elements は、ないから 0 @Count は、ないけど 1 ? @

12.

@次に、これは? ヌル値が3つは、いずれも3を返します でも、ヌル値が1つだけになると @ @Elementsの方は、1つあるのに0と云っている…?

13.

@ 前掲の tmp も値は "" つまり 👆👇 どちらも実質同内容です ここでようやく、2つの関数の違いが のみこめてきた感じがするのではと 「ない」と見るか 「ヌル値が1つある」と見るかの 違いだろう、と思います @

14.

@ @For@ で放談

15.

@ @For ヘルプによれば 「条件が True の間、ステートメントを繰り返し実行しま す。」 構文はこんな感じ 変数に 初期値 実行条件 @ 変数変える ふつうは増やす @For( initialize ; condition ; increment ; statement ; ... ) 繰り返しやりたいことはここに書くよ

16.

@ たとえば、あることを1から10まで繰り返したい場合は 初期値 実行条件 変数変える ふつうは増やす @For(n := 1; n <= 10 ; n := n + 1; や り た い こ と ; W h a t w e w a n t t o d o ); @ 他の関数ではあまり見かけない 引数内での変数の代入が"標準の使い方"であることに、 初めてみたとき、私は正直、 違和感も…ありました

17.

@ そうなると 逆らいたくなるのが性 標準でなさそうなことをやったらどうなるかを 確かめてみたくなるのが、世の理でございます 標準的に記すと、こんな式 が、あるとします 結果の値 @ 式

18.

@式をこんな風に変えても、結果は同じでした 初期値は、@For より前に指定しちゃっても、大丈夫♬ @

19.

@じゃあ、こんなことをしちゃった場合は? 3番目と4番目の引数を交換してしまったら、式は動くかな ? @

20.

@答え式は動きました、けど、結果の値がこう変わりました 結果の値 @

21.

@どうやら、この関数の本質…骨組みって こういうことではないかと思います ● 常に👇この順序で動作する 1番目の引数 2番目の引数 4番目以降の引数 3番目の引数 2番目の引数 4番目以降の引数 3番目の引数 2番目の引数 4番目以降の引数 3番目の引数 : @For( initialize ; condition ; increment ; statement ; ... @ ) ● 2番目の引数(条件/condition)がFalseになったら動作終了 これ以外の機能はないと思います (初期値/initializeと増分/incrementは 機能ではなく、単なるおすすめ・想定の使い方かと)

22.

@そろそろ、前回のつづき とりあえず全フィールドの中身を テキスト表示する着せ替えフォーム もうひとつ、触れておきたい関数 に戻りたいのですが 残ってました @

23.

@ @GetField @ で放談

24.

@ @GetField ヘルプによれば 「指定されたフィールドの値を返します。」 たとえば @GetField("Title") と、やればTitleフィールドの値が @GetField("Status") と、やればStatusフィールドの値が @GetField("Date") と、やればDateフィールドの値が @ 戻り値になります

25.

@ でも、それって @GetField("Title") @GetField("Status") @GetField("Date") と、わざわざ関数使わなくても Title Status Date だけで、コト足りるよね? つまり、@GetField を実際に使うのは、 フィールドの名前が特定できないときが中心 変数などと組み合わせて 使うのがメインになります @ と、これだけ申しておけば次へ進めるかな

26.

@ 前回のおさらい お見せしようとしていたのは どんなフォームで作られた文書でも とりあえず全フィールドの中身を テキスト表示する着せ替えフォーム @ でした

27.

@ ひとまず文書内の全フィールドの IDと値を表示しちゃうフォームです @

28.

@ フォームにフィールドはひとつも置かず たったひとつの計算結果テキストを置きまして そこへ前回使用した@DocFieldsや、 今回の各関数を使った式を入れます @

29.

@こんな式でした @

30.

@こんな式でした、やや粗削りですが😏 @DocFieldsは変数へ代入 @DocFieldsの要素数分を@Forで回し @ フィールド名とフィールド値を追加 フィールド値は@GetField したら、属性が不定なので@Textをかけ、 複数値の場合に備えカンマで区切ります

31.

@ 今回もお付き合い ありがとうございました 😀 @