Menu
Coddy logo textTech

매개변수가 있는 클로저

Coddy Rust 여정의 Logic & Flow 섹션에 포함된 레슨 — 66개 중 61번째.

매개변수를 받지 않는 클로저도 유용하지만, 대부분의 경우 클로저를 더 유연하고 강력하게 만들기 위해 데이터를 전달하고 싶을 것입니다. 클로저에 매개변수를 추가하는 것은 이전에 배운 것과 동일한 패턴을 따르지만, 수직 바(|) 안에 값을 넣는 방식입니다.

하나의 매개변수를 받는 클로저를 정의하는 방법은 다음과 같습니다:

let add_one = |x: i32| x + 1;

매개변수 x가 함수 매개변수와 마찬가지로 수직 바 사이에 위치한다는 점에 유의하세요. 그런 다음 값을 전달하여 이 클로저를 호출할 수 있습니다:

let add_one = |x: i32| x + 1;
let result = add_one(5); // 결과는 6

여러 개의 매개변수가 있는 클로저의 경우, 쉼표로 구분합니다:

let multiply = |x: i32, y: i32| x * y;
let result = multiply(3, 4); // 결과는 12입니다
challenge icon

챌린지

쉬움

두 개의 입력을 받게 됩니다. 첫 번째 입력은 숫자이고, 두 번째 입력 또한 숫자입니다. 두 개의 매개변수를 받아 거듭제곱(첫 번째 매개변수를 두 번째 매개변수만큼 거듭제곱)을 계산하는 클로저를 생성하세요. 클로저를 변수에 저장하고, 입력값과 함께 호출한 뒤 결과를 출력하세요.

요구 사항:

  • 첫 번째 입력(밑수)을 읽고 공백을 제거합니다.
  • 이를 i32 타입으로 파싱합니다.
  • 두 번째 입력(지수)을 읽고 공백을 제거합니다.
  • 이를 u32 타입으로 파싱합니다.
  • .pow() 메서드를 사용하여 거듭제곱을 계산하는 두 개의 매개변수를 가진 클로저를 생성합니다.
  • 클로저를 변수에 저장합니다.
  • 두 입력값을 사용하여 클로저를 호출합니다.
  • 결과를 출력합니다.

입력:

  • 첫 번째 줄: 밑수 (예: 2)
  • 두 번째 줄: 지수 (예: 3)

출력:

  • 거듭제곱 계산 결과

치트 시트

클로저는 수직 바 || 사이에 매개변수를 두어 매개변수를 전달받을 수 있습니다:

let add_one = |x: i32| x + 1;
let result = add_one(5); // 결과는 6입니다

매개변수가 여러 개인 경우, 쉼표로 구분합니다:

let multiply = |x: i32, y: i32| x * y;
let result = multiply(3, 4); // 결과는 12입니다

직접 해보기

use std::io;

fn main() {
    // 첫 번째 입력(밑수)을 읽습니다
    let mut base_input = String::new();
    io::stdin().read_line(&mut base_input).expect("Failed to read line");
    let base: i32 = base_input.trim().parse().expect("Invalid number");
    
    // 두 번째 입력(지수)을 읽습니다
    let mut exp_input = String::new();
    io::stdin().read_line(&mut exp_input).expect("Failed to read line");
    let exponent: u32 = exp_input.trim().parse().expect("Invalid number");
    
    // TODO: 거듭제곱을 계산하는 클로저를 생성하고 변수에 저장합니다
    // TODO: 밑수와 지수를 사용하여 클로저를 호출합니다
    
    // 결과를 출력합니다
    println!("{}", result);
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

Logic & Flow의 모든 레슨