매개변수가 있는 클로저
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입니다챌린지
쉬움두 개의 입력을 받게 됩니다. 첫 번째 입력은 숫자이고, 두 번째 입력 또한 숫자입니다. 두 개의 매개변수를 받아 거듭제곱(첫 번째 매개변수를 두 번째 매개변수만큼 거듭제곱)을 계산하는 클로저를 생성하세요. 클로저를 변수에 저장하고, 입력값과 함께 호출한 뒤 결과를 출력하세요.
요구 사항:
- 첫 번째 입력(밑수)을 읽고 공백을 제거합니다.
- 이를
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);
}이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.