468 Views
November 27, 23
スライド概要
Notes/Dominoの@関数を取り上げながら、調べたこと、経験したことを雑談してゆきます。
第37回は @Return と @Replace、@ReplaceSubstring について
@ -notes knows community- 2022/07/14 @関数Talk 第37回 公開版 @ Talks around @Functions in Notes and Domino 37th ✔ @Return ✔ @Replace ✔ @ReplaceSubstring 阿部 覚 (tw:) @abesat
@ @Return @ で放談
@ 前回、 @Return は 途中で値を返して式を終えるときに用いること を @If(・・・・・・;・・・・;@Return("1")); tmp1 := ・・・・・・・・・・・・・・; @If(・・・・・・・; @Prompt(・・・・・・・・・・・); ・・・・); tmp2 := tmp1・・・・・・・・・・・・・・; ・・・・; ・・・・・; tmp1+tmp2 条件満たさない? なら ハイ、"1"返します 🎵それまでーョ @ (ついでに なぜか現行のヘルプからはそれが読み取れないこと お伝えしました も)
@ そもそも、そこさえ押さえておけば この関数に関しては「のの会」としてはOKでは? と思います すこしオマケのお話もできなくはないけど まあお役立ち度は低いし、ということで😅 @
@ @Replace @ で放談
@ 配列の置き換えを行う関数ですね このリストに たとえば… @Replace("Apple Pie":"Bananas":"Orange Juice":"Apple"; これが あったら "Apple"; "Orange") これに置き換えてね 戻り値の表示例 @ 元のリストに"Apple"があれば"Orange"に変わります ("Apple Pie" は変わりません)
@ 複数の置き換えにも対応しています。 例は単純化しますけど @Replace("A":"B":"C":"A"; "A":"C"; "X":"Y") 戻り値の表示例 @
@ では、置換前と置換後のリストの要素数が違ってたら? @Replace("A":"B":"C":"D":"E"; "A":"C":"E"; "X":"Y") 戻り値の表示例 @ 置換前の方が多い場合は、 あぶれた分は、値なし("")に置換されてしまいました
@ 置換前と置換後のリストの要素数が違ってたら? @Replace("A":"B":"C":"D":"E"; "A":"C"; "X":"Y":"Z") 戻り値の表示例 置換後の方が要素数が多い場合は、 あぶれた分は無視されるようです @ ちなみに、置換対象のリストに値なし("")が含まれていても"Z"には置き換わりませんでした
と、ここでちょっと話題を変え @ こんな(カナリいい加減な)式を実験してみました @If(AAA="1";""; @Replace("A":"B"; "C"; @Return("D"))); "E" @ AAAが"1"でないときに、 リスト内の"C"を置き換える内容(でも、"C" ないけど) これ、「AAAが"1"でないとき」の戻り値は どうなると思いますか?
@ 答え: となりました @If(AAA="1";""; @Replace("A":"B"; "C"; @Return("D"))); "E" @ @Replaceの変換対象の文字がなかろうとも関係なく ここで"D"を返して式終了です @Returnはどうやら、@Ifの条件式に合致すれば 他の関数内に引数として含まれていても効くようです、 というか、それを含む関数が実質無視されます
@ ちなみに、こんな式も試してみたんですが 案の定、戻り値は日時ではなく、数字の1でした @Returnの余談はここまで、 いったん@Replaceに"Return"します @
@ あと、置換前と置換後に同じものがあったらどうなる? @Replace("A":"B":"C":"D":"E"; "A":"D"; "D":"Z") @ この場合、 "A" は "D" に変わった後で "Z" に再変身する?
@ あと、置換前と置換後に同じものがあったらどうなる? @Replace("A":"B":"C":"D":"E"; "A":"D"; "D":"Z") 戻り値の表示例 結論:再変身はありませんでした @
@ でも、ここで… @
@ @ReplaceSubstring で放談 @
@ 先ほどの式を@ReplaceSubstringに変えます @ReplaceSubstring("A":"B":"C":"D":"E"; "A":"D"; "D":"Z") 戻り値の表示例 @ "A" ➡ "D" ➡ "Z" の再変身が発生しています
@ そもそも、 わざわざ"D"を経由しての再変換でなくても はじめから "A" を "Z" に直で変換するよう設定しておけばいいんでは ただ、この違いが @Replace と @ReplaceSubstring の 性格のちがいも あらわしているようには思えます @ おっと、ご紹介が遅れました
@ 本来は、部分文字列の置き換えを行う関数ですね @ReplaceSubstring ("Apple Pie":"Bananas":"Apple":"Apple Juice":"Nuts"; これが あったら "Apple"; "Orange") これに置き換えてね 戻り値の表示例 @ 元の文字列にAppleがあればOrangeに変わります Apple Pie も Orange Pie に Apple Juice も Orange Juice に変わっちゃいました
でも、 @ AppleがOrangeに、Apple Juice が Orange Juice に 変わるのはいいけど Apple Pie は例外だよ、そのままにしたいという場合 こうやって戻すことならできそうですね @ReplaceSubstring ("Apple Pie":"Bananas":"Apple":"Apple Juice":"Nuts"; "Apple":"Orange Pie"; "Orange":"Apple Pie") 戻り値の表示例 @
@ といったところで 今回も@ReplaceSubstringのほうは つづきが要りそうですね @
@ 今回もお付き合い ありがとうございました 😀 @