Menu
Coddy logo textTech

is_some() と is_none()

CoddyのRustジャーニー「Logic & Flow」セクションの一部 — レッスン 37/66。

時には、実際にその値を取り出すことなく、Optionに値が含まれているかどうかを確認する必要がある場合があります。Rustはこのために2つの便利なメソッドを提供しています:.is_some().is_none()

両方のメソッドはboolean値を返すため、if条件での使用に最適です。

let maybe_score = Some(85);

if maybe_score.is_some() {
    println!("We have a score!");
}

if maybe_score.is_none() {
    println!("No score available");
}

.is_some()メソッドは、OptionSome値を含んでいる場合にtrueを返し、Noneの場合はfalseを返します。.is_none()メソッドはその逆で、Noneに対してはtrueを、Someに対してはfalseを返します。

challenge icon

チャレンジ

簡単

入力として数値を受け取ります。数値が正の場合は Some(number) を含み、数値がゼロまたは負の場合は None となる Option<i32> を作成してください。.is_some().is_none() を使用して Option をチェックし、適切なメッセージを出力してください。

要件:

  • 入力を読み取り、i32 に変換します
  • Option<i32> 変数を作成します:
    • 数値が正(0より大きい)の場合、Some(number) を割り当てます
    • 数値がゼロまたは負の場合、None を割り当てます
  • .is_some() を使用して、Option に値が含まれているかチェックします
  • .is_some()true を返す場合、Positive number detected と出力します
  • .is_none() を使用して、Option が空であるかチェックします
  • .is_none()true を返す場合、No positive number と出力します

入力:

  • 単一の整数 (例: 42, 0, または -5)

出力:

  • 数値が正の場合: Positive number detected
  • 数値がゼロまたは負の場合: No positive number

チートシート

Optionが値を含んでいるかを確認するには、.is_some()を使用します:

let maybe_score = Some(85);

if maybe_score.is_some() {
    println!("We have a score!");
}

Optionが空であるかを確認するには、.is_none()を使用します:

if maybe_score.is_none() {
    println!("No score available");
}

どちらのメソッドも、論理値(trueまたはfalse)を返します。

自分で試してみよう

use std::io;

fn main() {
    // 入力を読み込む
    let mut input = String::new();
    io::stdin().read_line(&mut input).expect("Failed to read line");
    let number: i32 = input.trim().parse().expect("Invalid input");
    
    // TODO: 以下にコードを記述してください
    // 数値が正かどうかに基づいて Option<i32> を作成します
    
    // Option が Some かどうかを確認し、適切なメッセージを表示します
    
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

Logic & Flowのすべてのレッスン