[Rust] 함수
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 구문을 사용해 중간에 더 일찍 함수를 종료 시키거나할 수 있습니다.