Rustの基礎 - 比較演算子と論理演算子
ナビゲーションに移動
検索に移動
概要
条件を設定して判定する時に比較演算を行う。
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 を使用する。