Rust

[Rust] 함수

dev_dean 2022. 4. 10. 14:56

Rust의 함수에 대해 알아보겠습니다.

 

함수의 선언

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

 기본적으로 함수의 선언은 fn으로 하며 함수명은 관례로 스네이크 케이스를 따릅니다.
함수의 호출은 다른 언어들과 다르지 않습니다.

 

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

    another_function();
}

fn another_function() {
    println!("Another function.");
}

함수의 호출에서 another_function 함수의 위치는 main 함수 앞에 있더라도 문제가 되지 않습니다. 

 

자바스크립트와 비슷하게 간단한 함수 표현 또한 가능합니다.

fn main() {
    let x = 5;

    let y = {
        let x = 3;
        x + 1
    };

    println!("The value of y is: {}", y);
}

이 예제를 실행시키면 "The value of y is: 4" 가 출력됩니다.

실행 결과

 

매개변수

 

 함수에 매개변수는 데이터 타입을 지정해주어야 합니다. 

밑의 예시를 보겠습니다.

fn main() {
    another_function(5);
}

fn another_function(x: i32) {
    println!("The value of x is: {}", x);
}

 

another_function에 선언에서 x라는 i32 정수형 매개변수를 받겠다고 선언되어 있습니다.

let 키워드로 일반적인 변수를 선언할 때 데이터 타입을 지정하지 않아도 되었던 것과 다르게 매개변수의 데이터 타입을 지정하지 않으면 컴파일 오류가 발생하므로 주의하셔야 합니다. 

 

반환

 Rust에서 함수의 선언에서 반환 타입을 적어주고 반환 값은 일반적으로 함수의 맨 마지막 라인이 됩니다. 

예시를 보면

fn example_function() -> i32 {
  print!("hello world!");
  5 // (return) 5; 
}

함수의 선언에서 반환 값은 -> [반환 타입] 을 적어주며 함수의 맨 마지막 라인인 5가 반환되며 마지막 라인의 반환 값은 세미콜론(;)을 붙이지 않습니다.

아까 봤던 예시를 보면

    let y = {
        let x = 3;
        x + 1
    };

let을 활용한 함수 표현도 마지막 반환 값에 세미콜론이 붙지 않는 것을 알 수 있습니다. 

 

return 구문이 사용 불가능한 것은 아니기 때문에 return 구문을 사용해 중간에 더 일찍 함수를 종료 시키거나할 수 있습니다.