216 Views
February 07, 19
スライド概要
Notes/Dominoの@関数を取り上げながら、調べたこと、経験したことを雑談してゆきます。
第9回は @Right、@RightBack、@Left、@LeftBack、そして@ThisName について。
また、こちらに「のの会」で発表した後の補足を書いておりますので、あわせてご参照ください。
https://blogs.yahoo.co.jp/jftfw228/15334834.html
-notes knows community- 2019/02/06 @関数Talk 第9回 公開版 ネオアクシス株式会社 阿部覚 (tw:) @abesat
今回は いつかやろうと思っていて でもなんとなくキープしてきたネタ この4つの関数って、 どれを使うか こんがらがったり…しませんか?
@Right @Left @RightBack @LeftBackの 雑談
右と左の違いくらいは区別がついても @Right @Left @RightBack @LeftBack 4つの正確な使い分けかた、わかりますか?
まずはヘルプのリファレンスを見ましょう IBMさんのヘルプ 書かれぶりに、少々統一感がないような…
個々のヘルプの記載にも ややばらつきがありますが IBMさんのヘルプ 2種類の構文があるのはいずれも同じです
わかりやすく書くと @Right("Notes_Knows"; 5) 2つ目の引数が数値になるタイプと @Right("Notes_Knows"; "_") 2つ目の引数が文字列になるタイプ ※上記例の戻り値はいずれも"Knows"
以降、このスライドでは @Right("Notes_Knows"; 5) こちらを「数値タイプ」 @Right("Notes_Knows"; "_") こちらを「文字タイプ」と 呼ぶことにします
数値タイプから確認しましょう こんなフォームを用意しました 同じ引数で各@関数を実行します 1つ目の引数 2つ目の引数 左の見出しの式を持つ計算結果フィールド
カウントダウン形式で行きたいと思います! 1つ目の引数はこの11文字 2つ目の引数を 11から 減らしてゆきます 都度、更新ボタンを押してるとお考え下さい
スタート!
10
9
8
7
6
5
4
3
2
1
でもって、0! でもって
ついでに、-1!
数値タイプをまとめると こんなとらえ方になるでしょうか @Right AAAAABBBBB @RightBack AAAAABBBBB @Left AAAAABBBBB @LeftBack AAAAABBBBB
マイナス指定は、ヘルプに載っており @Left、@LeftBackのヘルプに 「負の数値を指定すると、 文字列全体が返されます。」とあります …ん? ヘルプ、間違ってますよ!
今度は文字タイプです やはりこんなフォームを用意しました 1つ目の引数 2つ目の引数 左の見出しの式を持つ計算結果フィールド
サンプルに使うメインの文字列は、 やはりこれ こちらでは、2つ目の引数を 「o」にしています
やってみると…
文字タイプをまとめると こんなとらえ方になりそうです @Right aaaaaXaaaaa @RightBack aaaaaXaaaaa @Left aaaaaXaaaaa @LeftBack aaaaaXaaaaa
両タイプを並べてみます このとらえ方だと@Right、@RightBackは タイプにより探索方向が逆… 数値タイプ 文字タイプ @Right AAAAABBBBB aaaaaXaaaaa @RightBack AAAAABBBBB aaaaaXaaaaa @Left AAAAABBBBB aaaaaXaaaaa @LeftBack AAAAABBBBB aaaaaXaaaaa
文字タイプに関して補足をひとつ 目的としている文字が1つ目の引数にないとき 各関数は値を返さない、 ヌルになってしまいます
その対策として tmp := @Right(Target; "X"); @If(tmp=""; Target; tmp) こんな式を書いている方がいたら @Right(Target+"X"; "X"); こんな風に簡略化できます プログラミングの世界で 「番兵」と呼んでいる方法になると思います
@ThisNameの 補足
前回、 @ThisValueといっしょに取り上げたけど IBMさんのヘルプ 実例は挙げずに…
こんなこと書いておしまいにしていました もうひとつ、 @ThisName のほうは いまいち利用しづらい というのもありますが これはまた機会があれば 会場では異論もあったので、 なんとなく補足しますと
ヘルプにはこんなことが書かれており IBMさんのヘルプ 私が知っていたのはこういう使い方
ただフィールド名を取り出すだけのために わざわざ@ThisNameとほかの関数を 組み合わせるのって大げさでない? というのが、 私の感じていた使いづらさです あきらめて フィールド名を直接書いちゃった方が 式、短くて済むし 後から見る人がわかりやすいよね? Quantity_1 * Cost_1
と…私の話は、いったんここで 区切りたいと思います! 今回もありがとうございました!