러스트 프로그래밍 튜토리얼 3-2장

cardia·2022년 6월 30일
0

rust의 공식 문서를 참조해 작성함 https://doc.rust-lang.org/book/ch03-01-variables-and-mutability.html

Functions

러스트의 함수는 fn 키워드를 사용해 선언할 수 있으며 함수명은 snake case(how_to _name_of_functions) 방법을 이용해 만든다.

fn main() {
    print_labeled_measurement(5, 'h');
}
fn print_labeled_measurement(value: i32, unit_label: char) <--parameter {
    println!("The measurement is: {}{}", value, unit_label);
}

예시와 같이 main함수가 print 함수보다 먼저 선언되어도 에러 없이 컴파일 된다. 해당 함수가 정의가 되기만 한다면 가능하다. 다수의 파라미터를 , 구분을 통해 전달할 수 있으며 value : i32 와 같이 함수에서는 파라미터의 타입을 반드시 정의해주어야 한다.

Statements and Expressions

러스트는 expression-based 언어로 statement와 expression의 구분이 중요하다. Statement는 특정한 동작을 수행하는 지시로 리턴 값이 존재하지 않는 반면 expression은 리턴 값이 존재한다. expression에 ; 를 붙이면 statement가 된다. 예를 들어, let y =6; 은 statement로 y에 6을 할당하며 리턴 값이 없다. 여기에서 expression은 6으로 6은 정수 6의 값을 리턴하기 때문에 let y =6;의 y에 값이 들어갈 수 있다.

fn main() {
    let x = (let y = 6);
}

이 메인 함수는 컴파일 되지 않는데 그 이유는 let y =6은 statement로 어떤 값도 리턴하지 않아 x에 값을 할당할 수 없기 때문이다. 함수를 부르거나 매크로를 부르는 것도 expression이며 {}로 생성된 블럭도 expression이다.

fn main() {
    let y = {
        let x = 3;
        x + 1  <-- no semicolon
    };
    println!("The value of y is: {}", y);
}

여기에서 expression은

{
    let x = 3;
    x + 1
}

이며 x+1에 세미콜론이 없기 때문에 값을 리턴하는 expression이 될 수 있다.
이와 비슷하게 함수에서 리턴 값이 있다면 세미콜론을 붙일 수 없다.

fn main() {
    let x = plus_one(5);
    println!("The value of x is: {}", x);
}
fn plus_one(x: i32) -> i32 {
    x + 1; <--- semincolon, so no return value causing error
}

Comments

러스트에서 코멘트는 // 를 통해 쓸 수 있다.

0개의 댓글

관련 채용 정보