[Rust]

[Rust] 함수 동작 원리

극꼼 2023. 7. 19. 20:19
반응형


fn 키워드는 새로운 함수의 선언을 가능하게 하고, 중괄호는 컴파일러에게 함수의 시작과 종료 지점을 알려줍니다.

Rust 코드는 Snake case 규칙으로 함수 이름을 네이밍합니다.

 * Naming 규칙(camel, kebab, pascal, snake case) : https://geukggom.tistory.com/251

 

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

    snake_case_function();
}

fn snake_case_function() {
    println!("Snake case");
}

 

 

1) 함수 매개변수

parameter(매개변수)와 타입 argument(인수)를 혼용해서 사용해선 안 됩니다. 아래 예시에서 x가 매개변수, 숫자 5가 인수입니다.

fn main() {
    another_function(5);
}

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

매개변수에는 반드시 타입을 정해주어야하고, 매개변수와 인수는 같은 타입으로 매칭되어야 합니다.

 

2) 함수 본문

구문의 나열로 구성되며, 필요에 따라 표현식으로 종결됩니다.

 

3) 구문과 표현식

fn main() {
    let y = 6; // => 구문
}

구문은 값을 반환하지 않으므로, 다음과 같이 입력할 수 없습니다.

let x = (let y = 6);

Rust 코드의 대부분은 표현식으로, 값을 반환합니다.

let x = 5;

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

// 아래 블럭이 반환식으로, 세미콜론을 붙이지 않음. 
{
    let x = 3;
    x + 1
}

 

세미콜론을 붙이면 표현식은 구문으로 바뀌고 값을 반환하지 않게 됩니다.

 

4) 반환 값을 갖는 함수

반환 값을 갖는 함수는 -> 를 사용합니다. 아래 코드에서 x는 숫자 6 값을 가집니다.

fn plus_one(x: i32) -> i32 {
    x + 1
}

fn main() {
    let x = plus_one(5);
}

x + 1 끝에 세미콜론을 붙일 경우(x + 1;) 'error[E0308]: mismatched types' 에러가 납니다. 함수가 i32타입을 반환하겠다고 명시되었지만 세미콜론을 붙임으로서 값을 반환하지 않게 되어 ()처럼 비어있는 튜플로 표현됩니다.


요약에 사용된 참조 : https://rinthel.github.io/rust-lang-book-ko/ch03-03-how-functions-work.html

 

 

 

 

반응형

'[Rust]' 카테고리의 다른 글

[Rust] 소유권  (0) 2023.07.25
[Rust] 제어문  (0) 2023.07.20
[Rust] 데이터 타입  (0) 2023.07.18
[Rust] 변수와 가변성  (0) 2023.07.17
[Rust] cargo  (0) 2023.07.16