Rust 함수 기초
이번 포스트는 Rust 함수에 대해 다룹니다.
여타 모던 프로그래밍 언어들과 비슷한 개념과 형식을 취하기 때문에 어려울 것은 없습니다.
차근차근 알아보겠습니다.
Rust 함수는 크게 3가지의 구성 요소가 있다고 생각할 수 있습니다.
- 파라미터
- 함수 내용에 해당하는 선언문 혹은 표현식
- 리턴값
이 요소들을 가지고 함수를 정의할 때는 fn
키워드를 사용합니다.
그리고 함수 이름은 영문 소문자 혹은 숫자와 언더스코어(_
)로 이루어진 snake_case
형식을 사용합니다.
마지막으로 함수 body는 중괄호({}
)를 이용해 표시합니다.
Rust 프로그램의 시작점은 main()
함수입니다. 그외의 함수들은 프로젝트 내 어느 파일에 위치해 있던간에
main()
함수에 불러와서 사용할 수 있습니다.
파라미터
단어 파라미터(Parameter)와 아규먼트(Argument)를 명확히 구분하는 언어들도 있지만, Rust에서는 크게 구분하지 않는 편입니다.
편의상 파라미터라고 작성하겠습니다.
Rust 함수에서 파라미터를 정의할 때는 변수 이름과 타입을 명시해줍니다.
다수의 파라미터를 정의할 때도 마찬가지입니다.
선언문과 표현식
Rust 함수는 함수 내용(body)으로 선언문(Statements) 혹은 표현식(Expressions)을 포함합니다.
이 때, 선언문이란 결과값을 바라지 않는 행위를 포함하는 코드입니다. 예를 들어, 변수를 선언하고 값을 대입하는 코드는 선언문입니다.
그리고, 표현식이란 결과값이 있어서 특정 값의 역할을 하는 코드입니다. 2 + 2
와 같은 표현식은 4
와 같다고 생각할 수 있습니다.
쉽게 말해서 대입 연산자(=
)의 오른쪽에 들어갈 수 있으면 표현식, 아니면 선언문입니다.
Rust는 표현식을 주로 사용하는 언어입니다. 함수 호출, 매크로 호출, if
문, 심지어 중괄호로 새로운 scope를 만드는 것도 모두 표현식입니다.
이 때문에, 아래와 같은 코드가 가능합니다.
x + 1
는 표현식이가 때문에 라인의 끝에 세미콜론(;
)을 붙이지 않습니다.
세미콜론을 붙이게 되면, 이 라인도 선언문이 되어 아무 값도 리턴하지 않습니다.
리턴값
Rust 함수는 리턴값의 타입 역시 명시해야 하며 아래와 같이, ->
키워드를 이용합니다.
함수 body 안에서는 return
키워드로 리턴값을 명시하거나, 마지막 줄의 표현식이 해당 함수의 리턴값이 됩니다.
후자의 경우, "마지막 표현식"인 만큼 위에서 언급했듯이 세미콜론은 붙이지 말아야 합니다.
여기까지 Rust 함수 기초 내용이었습니다.
아직은 단순해보이는 함수는 앞으로 다룰 다른 문법들과 연계되어 훨씬 유연하고 효율적인 방식으로 정의할 수 있게 됩니다.
기본적인 함수에 대해 이해가 가능해졌으니, 다음 포스트는 if
, loop
등 제어문에 대해 알아보겠습니다.