4.1 함수
함수는 fn 키워드로 정의한다. 이제 서서히 러스트에 문법을 익히면서 언어를 알 듯 코드를 볼 수 있는 느낌이 올 것이다.
// 기본 함수 정의 fn main() {
println!("Hello, world!");
}
// 매개변수가 있는 함수
fn print_sum(x: i32, y: i32) {
println!("sum: {}", x + y);
}
// 반환값이 있는 함수
fn add(x: i32, y: i32) -> i32 {
x + y // 세미콜론 없음 (표현식) }
기본 함수 정의는 fn main() {} 이런 형태로 최종 읽고 마무리 된다. 잘 파악해서 어떻게 출력이 되는 지 등등 혹시 오류가 있으면 고칠 수 있는지도 잘 판단하길 바란다. 그리고 주의할 점도 세미콜론 없음...이렇게 적힌 부분도 잘 보길 바란다.
4.2 매개 변수와 반환값
일반적으로 컴퓨터가 일본에서 건너와서 그런지 매개변수, 반환값 등등 한자로 의미를 전달하는 내용이 우리나라 코드에 너무 많다. 위에 보는 것처럼 튜플도 사용하면서 한국어로는 매개변수 이게 무슨 뜻인가...잘 검색해서 무엇인지 이해를 하고 개발하길 바란다.
인터넷에 단위 타입 반환, 명시적 반환 모든것이 한자의 의미를 가지고 있다...잘 검색해서 뜻을 이해하기 바란다.
//여러 값 반환(튜플 사용)
fn swap(x: i32, y: i32) -> (i32, i32) {
(y, x) }
// 명시적 반환
fn abs(x: i32) -> i32 {
if x < 0 {
return -x; }
x }
// 단위 타입 반환
fn print_message() -> () {
println!("Hello!");
}
4.3 익명 함수(클로저)
클로저 많이 컴퓨터 용어에서 나오는 내용이다..개념을 잘 이해하고 검색을 통해서 어떤 정의가 있는 지 찾아보길 바란다.
러스트 문법에서는 | 매개번수 | 본문 이런 형태로 정의가 된다... 잘 보고 어떤 것이며 매개변수의 의미를 알아야 클로저를 이해할 수 있지 않을까 싶다.
// 클로저 정의
let add = |x: i32, y: i32| -> i32 {
x +y };
// 타입 추론 가능
let multiply = |x, y| x * y;
// 환경 변수 캡처
let num = 5;
let add_num = |x| x + num;
// 고차 함수에 클로저 전달
let numbers = vec![1, 2, 3]; let doubled: Vec = numbers
.iter()
.map(|x| x * 2)
.collect();
이제 서서히 러스트에 대하여 저도 마찬가지지만 용어의 뜻과 이해 등등 많은 것들이 머리가 아파올 것이다. 하지만 포기하지 말고 배워보다
4.4 실습문제
fn main() { // 함수 호출
let result = add(5, 3); println!("5 + 3 = {}", result);
// 클로저 사용
let numbers = vec![1, 2, 3, 4, 5]; let sum: i32 = numbers
.iter()
.fold(0, |acc, x| acc + x); println!("합계: {}", sum);
}
이제 코드를 읽는 법을 알게 될 것이다. vec! 함수는 이미 올려 놓은 내용을 참고하면 되지만 공부를 해가면서 이런 함수에 대해서는 검색을 통해 익히면 매우 좋을 듯 하다.
러스트 기초편 7 (0) | 2025.09.01 |
---|---|
러스트 기초편 5 (3) | 2025.08.30 |
러스트 기초편 3 (0) | 2025.08.30 |
러스트 기초편 1 / 2 (0) | 2025.08.30 |
오류 처리 (Result, panic!) (1) | 2025.08.07 |