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 |