소개
**함수(function)**는 작업에 이름을 지정하므로, 프로그램이 필요할 때마다 해당 작업을 호출할 수 있습니다. 함수는 매개변수를 통해 입력을 받고 계산된 값을 반환할 수 있습니다.
이 실습에서는 준비된 Cargo 프로젝트에 세 개의 변환 함수와 모든 함수 호출이 이미 포함되어 있습니다. 각 단계에서 자리 표시자 표현식 하나를 바꿉니다. 입력해야 할 내용은 적지만, 함수 정의, 매개변수, 반환 타입, 표현식, 함수 호출이 어떻게 함께 동작하는지 확인할 수 있습니다.
함수에서 값 반환하기
이 단계에서는 분을 초로 변환하는 함수를 완성하고, 함수 정의와 함수 호출을 연결합니다.
준비된 프로젝트로 이동한 다음 소스 파일을 엽니다.
cd /home/labex/project/conversion-tool
nano src/main.rs
파일 상단에는 다음과 같이 함수 정의를 시작하는 코드가 있습니다.
fn minutes_to_seconds(minutes: i32) -> i32 {
fn은 함수를 선언합니다.minutes_to_seconds는 함수 이름입니다.minutes: i32는 **매개변수(parameter)**입니다.minutes라는 이름의 입력이며, 정수 타입인i32를 사용합니다.-> i32는 함수가i32값을 반환한다는 뜻입니다.- 중괄호 안에는 함수 본문이 들어갑니다.
Rust는 모든 함수 호출이 이 함수 시그니처와 일치하는지 확인합니다. 호출할 때는 선언된 순서대로 올바른 개수의 인수를 제공해야 하며, 각 인수의 타입은 호환되어야 합니다.
Step 1 주석 앞에 있는 0만 다음 코드로 바꿉니다.
minutes * 60 // Step 1: replace this placeholder expression.
minutes * 60에는 세미콜론이 없다는 점에 주의합니다. 이 표현식은 함수 본문의 마지막 **표현식(expression)**이므로, 그 값이 함수의 반환값이 됩니다. 세미콜론을 추가하면 값이 반환되지 않는 문(statement)으로 바뀝니다.
Ctrl+O를 눌러 저장하고, Enter를 누른 다음 Ctrl+X로 종료합니다. 코드를 확인합니다.
cargo check
main에 있는 minutes_to_seconds(5)는 **함수 호출(function call)**입니다. 값 5는 minutes 매개변수에 전달되는 **인수(argument)**입니다. 프로그램을 실행합니다.
cargo run --quiet
이제 첫 번째 줄에 다음 내용이 표시되어야 합니다.
5 minutes = 300 seconds
소수점 매개변수와 반환 타입 사용하기
이 단계에서는 부동 소수점 값을 받아 반환하는 두 번째 함수를 완성합니다.
소스 파일을 엽니다.
nano src/main.rs
celsius_to_fahrenheit를 찾습니다. 이 함수의 매개변수와 반환 타입은 모두 f64이므로 계산 결과의 소수점 값을 유지할 수 있습니다. 임시 표현식 celsius * 0.0은 매개변수를 사용하지만 의도적으로 0을 반환합니다. 이 표현식 전체를 다음 코드로 바꿉니다.
celsius * 9.0 / 5.0 + 32.0 // Step 2: replace this placeholder expression.
이 역시 표현식을 반환하는 방식입니다. 계산된 값이 함수 본문의 마지막 항목이며 세미콜론이 없습니다. 일반적인 산술 연산 우선순위에 따라 곱셈과 나눗셈이 덧셈보다 먼저 계산됩니다. 더 복잡한 계산 순서를 명확하게 나타내려면 괄호를 사용할 수 있습니다. 호출하는 쪽에서는 공식을 알 필요가 없습니다. 섭씨 값을 인수로 전달하면 변환된 화씨 값을 반환받습니다.
저장하고 종료한 다음 프로그램을 실행합니다.
cargo run --quiet
두 번째 줄에 다음 내용이 표시되어야 합니다.
20.0 C = 68.0 F
celsius_to_fahrenheit(20.0) 호출은 인수 하나를 전달합니다. 반환된 값은 화면에 표시하기 전에 fahrenheit 바인딩에 저장됩니다.
여러 인수로 함수 재사용하기
이 단계에서는 매개변수 두 개를 사용하는 함수를 완성하고, 하나의 함수를 두 번 호출하여 재사용하는 과정을 확인합니다.
준비된 scale_amount 함수는 amount와 factor를 받습니다. 매개변수는 쉼표로 구분하며, 각 매개변수에는 고유한 타입이 지정됩니다. 함수를 호출할 때는 같은 순서로 인수를 제공해야 합니다.
파일을 열고 Step 3 자리 표시자를 찾습니다.
nano src/main.rs
임시 표현식 amount * factor * 0.0은 의도적으로 0을 반환합니다. 이 표현식 전체를 다음 코드로 바꿉니다.
amount * factor // Step 3: replace this placeholder expression.
저장하고 종료한 다음 최종 확인을 실행합니다.
cargo check
완성된 프로그램을 실행합니다.
cargo run --quiet
같은 함수가 밀가루에 한 번, 물에 한 번 호출됩니다. 마지막 두 줄에 다음 내용이 표시되어야 합니다.
Scaled flour: 375.0 g
Scaled water: 270.0 ml
이것이 함수의 가장 큰 장점입니다. 계산을 한 번 정의하고 명확한 이름을 지정한 다음, 서로 다른 인수로 재사용할 수 있습니다.
요약
정수 및 부동 소수점 매개변수를 사용하는 함수를 완성하고, 반환 타입을 나타내는 화살표를 읽고, 마지막 표현식으로 값을 반환하고, 함수 호출에 인수를 전달하고, 하나의 함수를 여러 계산에 재사용했습니다.



