Blocks

๋Ÿฌ์ŠคํŠธ์—์„œ ๋ธ”๋ก์€ ๊ฐ’๊ณผ ํƒ€์ž…์„ ๊ฐ–์Šต๋‹ˆ๋‹ค: ๋ธ”๋ก์˜ ํ‘œํ˜„์‹์ด ๊ฐ’์ด ๋ฉ๋‹ˆ๋‹ค.

A block in Rust has a value and a type: the value is the last expression of the block:

fn main() {
    let x = {
        let y = 10;
        println!("y: {y}");
        let z = {
            let w = {
                3 + 4
            };
            println!("w: {w}");
            y * w
        };
        println!("z: {z}");
        z - y
    };
    println!("x: {x}");
}

ํ•จ์ˆ˜์—๋„ ๋™์ผํ•œ ๊ทœ์น™์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค: ํ•จ์ˆ˜๋ฐ”๋””์˜ (๋งˆ์ง€๋ง‰) ๊ฐ’์ด ๋ฐ˜ํ™˜ ๊ฐ’์ด ๋ฉ๋‹ˆ๋‹ค.

The same rule is used for functions: the value of the function body is the return value:

fn double(x: i32) -> i32 {
    x + x
}

fn main() {
    println!("doubled: {}", double(7));
}

์—ญ์ฃผ

  • ๋งˆ์ง€๋ง‰ ์ค„์— ; ์—†๋Š” ๋ถ€๋ถ„์„ ๊ตฌ๋ฌธ(statements)์ด ์•„๋‹ˆ๋ผ ํ‘œํ˜„์‹(expressions)์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ธ”๋ก์—์„œ ๊ตฌ๋ฌธ+ ๋งˆ์ง€๋ง‰ ํ‘œํ˜„์‹ ์ธ๊ฒฝ์šฐ ํ•ด๋‹น ํ•จ์ˆ˜๋ฅผ ํ‘œํ˜„์‹์œผ๋กœ ๋ด…๋‹ˆ๋‹ค.