皆もすなるQiitaといふものを、儂もしてみむとてするなり。
と言う訳で、こん**は!はなっち!です。
開発を進めていくと、条件分岐で処理の流れを制御しますね?この場合、下図にあるように、「条件分岐」アクテイビティとか、「フロー条件分岐」アクテイビティ中のConditionに条件を書いていくわけです。
まぁ、比較に関して言うと、一般的に以下の状態があるわけでして。。。
状態 | 別表現 | 記述 |
---|---|---|
AはBより大きい | 大(だい)なり | A>B |
AはB以上 | 大なりイコール | A>=B |
AはBと一致 | イコール | A=B |
AはB以下 | 小なりイコール | A<=B |
AはBより小さい | 小(しょう)なり | A<B |
AはBと不一致 | 不一致 | A!=B |
こんな書き方で、True状態、False状態を判断していくわけですね。
一方、.Netの多くの型には**.CompareTo()**ってメソッドがあり、これはAとBとの状態を、Int32の値として返却してくれる訳です。
**.CompareTo()**メソッドでの記述は、その状態を返却するだけなので、実際にはその状態を表した返却値を評価しなければならない訳で。それが「>」とか「<=」と違ってパッと見て分かりにくい!(私見)
ちょっと書いてみると、、、
A.CompareTo(B) | 返却値 | 意味合い | 記述 |
---|---|---|---|
AはBより大きい | 1 | A>B | A.CompareTo(B).Equals(1) |
AはBと一致 | 0 | A=B | A.CompareTo(B).Equals(0) |
AはBより小さい | -1 | A<B | A.CompareTo(B).Equals(-1) |
しかも、「大なりイコール」などのイコール系、不一致なんてのは、補集合の考えを使っていかないとならないわけで、ちょっとしたパニックになる訳です(私見)。
※ちょっとした自分の備忘録ですな。最早。。。
A.CompareTo(B) | 返却値 | 意味合い | 記述 |
---|---|---|---|
AはBより大きい | 1 | A>B | A.CompareTo(B).Equals(1) |
AはB以上(AはBより小さくない) | A>=B | Not A.CompareTo(B).Equals(-1) | |
AはBと一致 | 0 | A=B | A.CompareTo(B).Equals(0) |
AはB以下(AはBより大きくない) | A<=B | Not A.CompareTo(B).Equals(1) | |
AはBより小さい | -1 | A<B | A.CompareTo(B).Equals(-1) |
AはBと不一致(AはBと一致しない) | A!=B | Not A.CompareTo(B).Equals(0) |
実際にUiPathで簡単なシーケンスを組んで、ログからExcelにまとめて見ました。
まとまった表になって、ちょっとは分かりやすくなりました?(^・^)
おわりに
いかがでした?
.CompareTo()での返却値を.Equels()で評価して。。。況してNotを使わなければってとこが、未だに理解しにくく、いっそ等号、不等号で記述しちゃおうか。。。と思っています。実は、.CompareTo()を使うときは、未だに「Aは、Bよりぃ???」って声に出しつつ記述していて、決して人には聞かれたくない、見られたくない比較の実装ですね(^・^)
是非UiPathでのロボ開発の一助になればと思っています。
ありがとうございました!
2020/7/16 公開早々、誤字がありました。