Rust의 함수 작업

완료됨

함수는 Rust 내에서 코드가 실행되는 기본 방법입니다. 언어에서 가장 중요한 함수 중 하나인 main 함수를 이미 살펴보았습니다. 이 단원에서는 함수를 정의하고 사용하는 방법을 자세히 다룹니다.

함수 정의

Rust의 함수 정의는 fn 키워드로 시작합니다. 함수 이름 다음에, 함수의 입력 인수를 괄호 안에 데이터 형식을 넣어 쉼표로 구분된 목록으로 지정합니다. 중괄호는 컴파일러에 함수 본문의 시작 및 종료 위치를 알려줍니다.

fn main() {
    println!("Hello, world!");
    goodbye();
}

fn goodbye() {
    println!("Goodbye.");
}

함수를 호출할 때 괄호 안 입력 인수와 함께 그 이름을 사용합니다. 함수에 입력 인수가 없으면 괄호를 비워둡니다. 이 예제에서는 maingoodbye 함수 둘 다 입력 인수가 없습니다.

main 함수 다음에 goodbye 함수를 정의했다는 것을 알 수 있습니다. main 함수를 정의하기 전에 goodbye 함수를 정의할 수도 있습니다. Rust에서는 파일 어딘가에 정의되어 있기만 하면함수를 정의하는 파일 내 위치는 중요하지 않습니다.

입력 인수 전달

함수에 입력 인수가 있는 경우 각 인수의 이름을 지정하고 함수 선언을 시작할 때 데이터 형식을 지정합니다. 인수는 변수처럼 이름이 지정되므로 함수 본문의 인수에 액세스할 수 있습니다.

일부 문자열 데이터에 대한 포인터를 입력 인수로 가져오도록 goodbye 함수를 수정해 보겠습니다.

fn goodbye(message: &str) {
    println!("\n{}", message);
}

fn main() {
    let formal = "Formal: Goodbye.";
    let casual = "Casual: See you later!";
    goodbye(formal);
    goodbye(casual);
}

세 가지 인수 값을 가진 main 함수에서 함수를 호출하여 테스트한 다음 출력을 확인할 것입니다.

Formal: Goodbye.
Casual: See you later!

값 반환

함수에서 값을 반환하면 함수 인수 목록 뒤와 함수 본문의 여는 중괄호 앞에 구문 -> <type>을 추가합니다. 화살표 구문->은 함수가 호출자에게 값을 반환한다는 것을 나타냅니다. <type> 부분을 통해 컴파일러가 반환된 값의 데이터 형식을 알 수 있습니다.

Rust에서 일반적인 방법은 함수의 마지막 코드 줄을 반환할 값과 같아지도록 하여 함수의 끝에 있는 값을 반환하는 것입니다. 다음 예제는 이 동작을 보여줍니다. divide_by_5 함수는 입력 숫자를 5로 나눈 결과를 호출 함수에 반환합니다.

fn divide_by_5(num: u32) -> u32 {
    num / 5
}

fn main() {
    let num = 25;
    println!("{} divided by 5 = {}", num, divide_by_5(num));
}

출력은 다음과 같습니다.

25 divided by 5 = 5

함수의 임의의 지점에서 return 키워드를 사용하여 실행을 중단하고 호출자에게 값을 다시 보낼 수 있습니다. 일반적으로 return 키워드는 조건부 테스트와 함께 사용됩니다.

다음은 num 값이 0인 경우 함수에서 일찍 반환하기 위해 명시적으로 return 키워드를 사용하는 예입니다.

fn divide_by_5(num: u32) -> u32 {
    if num == 0 {
        // Return early
        return 0;
    }
    num / 5
}

return 키워드를 명시적으로 사용할 때는 세미콜론을 사용하여 문을 종료합니다. return 키워드를 사용하지 않고 반환 값을 다시 보낼 때는 세미콜론으로 문을 종료하지 않습니다. num / 5 반환 값 문에 종료 세미콜론을 사용하지 않은 것을 알 수 있습니다.

서명 검토

함수 선언의 첫 번째 부분을 함수 서명이라고 합니다.

이 예제에서 goodbye 함수의 서명에는 다음과 같은 특징이 있습니다.

  • fn: Rust의 함수 선언 키워드입니다.
  • goodbye: 함수 이름입니다.
  • (message: &str): 함수의 인수 또는 매개 변수 목록 문자열 데이터에 대한 하나의 포인터가 입력 값으로 필요합니다.
  • -> bool: 화살표는 이 함수에서 항상 반환하는 값의 형식을 가리킵니다.

goodbye 함수는 하나의 문자열 포인터를 입력으로 허용하고 부울 값을 출력합니다.

Rust Playground에서 예제 코드와 상호 작용할 수 있습니다.