Rust Language Study Ch2: Function

이 포스트는 Rust를 공부하고 기록한 포스트입니다. 개인적으로 Rust에 관심이 있었기도 했지만, Go에 관심이 있고 같이 배우자는 팀원분의 제안에 오기가 생겨서 공부를 시작하였습니다. 현재 시스템하고 Pwnable에 관심…이 있다고 말할 실력을 갖는 것을 목표로 공부하고 있습니다.

함수 동작 원리

함수의 대표적인 예는 main함수 입니다.

fn 키워드를 통해 새로운 함수를 선언합니다.

함수의 이름을 snake convention(소문자 + _)을 사용합니다.

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

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

Rust는 함수의 위치를 신경쓰지 않아서 어디든 정의만 되어 있으면 호출 가능합니다.

함수의 매개변수

‘함수명 : 타입명’으로 선언 합니다.

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

함수 본문

우리가 일반적으로 사용하는 구문을 기반으로 구성되기도 하지만 필요에 따라 표현식으로 종결되는 구문의 나열로 구성되기도 한다.

Rust가 표현식에 기반한 언어이므로 구문과 표현식이 어떻게 차이가 나는지 이해하는 것이 중요하다.

구문과 표현식

구문과 표현식의 가장 큰 차이는 구문은 어떤 명령들의 나열로 값을 반환하지 않는 어떤 동작을 수행하지만 표현식은 값을 산출해냅니다.

가장 큰 특징은 표현식은 종결을 나타내는 세미콜론을 사용하지 않습니다.

(자세한 내용은 프로그래밍 언어론에서 보실 수 있습니다.)

반환 값

스위프트처럼 -> 뒤에 타입을 선언하면 됩니다.

fn five() -> i32 {
    5
}

하지만 표현식이 아니라 구문으로 되어있었다면 ()처럼 비어있는 튜플로 반환됩니다.