Rustの基礎 - 比較演算子と論理演算子

提供:MochiuWiki - SUSE, Electronic Circuit, PCB
ナビゲーションに移動 検索に移動

概要

条件を設定して判定する時に比較演算を行う。
if文では、比較演算子 (==、>=、<=等) を使用して条件の比較判定を行う。

また、比較演算子は他にもいくつかある。


比較演算子

比較演算子を一覧を下表に示す。

比較演算子一覧
比較演算子 説明
== 等しい
!= 等しくない
< 未満
<= 以下
> より大きい
>= 以上


以下の例では、実際に比較演算子を使用して演算を行っている。

 fn main() {
    let x = 1;
    let y = 1;
 
    println!("{}", x == y);
    println!("{}", x != y);
    println!("{}", x < y);
    println!("{}", x <= y);
    println!("{}", x > y);
    println!("{}", x >= y);
 
    let z = vec![2, 4, 6, 8, 10];
    println!("{}", z.contains(&2));
 
    println!("{}", !(x == y));
 }
 
 // 出力
 true
 false
 false
 true
 false
 true
 true
 false


※注意
Rustにはin演算子は存在しないため、配列やベクタに対して contains メソッドを使用する。
否定は ! 演算子を使用する。


論理演算子

比較演算子と同様に、trueおよびfalseを返すものとして論理演算子がある。
論理演算子を一覧を下表に示す。

論理演算子一覧
論理演算子 説明
&& かつ(両方が成り立つ)
|| あるいは(どちらか一方が成り立つ)
! 否定


以下の例では、実際に論理演算子を使用して演算を行っている。

 fn main() {
    let x = 1;
    let y = 1;
 
    println!("{}", x > 0 && y > 0);
    println!("{}", x < 0 && y > 0);
    println!("{}", x > 0 || y > 0);
    println!("{}", x < 0 || y < 0);
 }
 
 // 出力
 true
 false
 true
 false


※注意
if文の条件式は必ずbool型でなければならない。

以下の例では、ベクターの要素が空かどうか確認している。
ベクターに要素があればfalse、要素が無ければtrueになる。
ベクター変数の要素が空なので、is_emptyメソッドがtrueを返し、if文のブロックが実行される。

 fn main() {
    let list: Vec<i32> = Vec::new();
    if list.is_empty() {
       println!("データは空です。");
    }
    else {
       println!("データが存在します。");
    }
 }
 
 // 出力
 データは空です。


Rustにおける真偽値の扱い

  • if文は必ずbool型 (true または false) を要求する。
  • 整数値や空コレクション等は自動的にbool型に変換されない。
  • 空チェックには is_empty メソッド、nullチェックにはOption型のis_none / is_some メソッドを使用する。
  • ゼロチェックには明示的に == 0 や != 0 を使用する。