시뻘건 개발 도전기

러스트 6 - 함수 본문

프로그래밍/RUST

러스트 6 - 함수

시뻘건볼때기 2019. 2. 17. 15:15
반응형

Rust 함수는 이미 사용했다.



이전 <How to run> 포스팅(https://maeng-dev.tistory.com/4)에서 함수에 대해 간략하게 언급한 적이 있다.

우리가 매일 같이 사용했던 main 함수를 선언할 때 fn을 사용하는 것과 같이 커스텀 되는 함수가 필요할 때도 마찬가지로 fn을 사용하면 된다.

fn main() {

    println!("Main Func");

    my_func();

}


fn my_func() {

    println!("My Func");

}




즉 함수는 fn으로 선언하고 중괄호로 정의한다. 선언되는 위치는 크게 중요하지 않다.

Parameters(파라미터)를 전달해서 출력해주는 함수를 짜보자.

fn main() {

    println!("Main Func");

    my_func('A', 123);

}


fn my_func(p1 : char, p2 : i8) {

    println!("첫 번째 파라미터 : {}", p1);

    println!("두 번째 파라미터 : {}", p2);

}



main에서 호출하는 my_func에 A라는 문자와 123이라는 값을 전달한다.

my_func은 값을 받아서 출력하게 되는 것. (my_func에서 사용할 변수명 : 타입)



함수 본문은 구문과 표현식으로 꾸며진다.

구문은 동작을 수행해도 값을 반환하지 않는 명령을 뜻하지만 표현식은 반대로 값을 반환한다.

fn main() {

    let a = 1;    // 구문

    // 표현식

    let b = {

        println!("표현식");

        let a = 2;

        a * 100

    };


    println!("b : {}", b);

}





이 코드와 결과를 보면 몇 가지의 사실을 알 수 있다.


사용하지 않는 변수의 이름 가장 앞 자리에 언더바(_)를 사용하기를 권장한다.

rust에서는 "return"이라고 명시를 하지 않아도 값이 반환 되는구나.

값을 반환할 경우에는 세미콜론(;)을 사용하지 않는구나.



그렇다면 반환 값을 가지는 함수들의 형태는 어떠할까?

fn main() {

    println!("return value : {}", return_func());

}


fn return_func() -> char {

    'A'

}




javascript에서의 arrow function과 비슷하게 생긴 저 녀석(->)을 주의깊게 보자.

상위 코드의 return_func는 다음과 같이 말하고 있다.

"내 이름은 return_func이고 문자를 반환하는 함수야. A를 반환해야지!"

즉, 리턴되는 녀석의 타입을 함수 선언할 때 정의해주어야 한다는 것!!!! 잊지말자 ㅎㅎㅎㅎ

반응형

'프로그래밍 > RUST' 카테고리의 다른 글

러스트 8 - 주석  (0) 2019.02.23
러스트 7 - 제어문과 반복문  (0) 2019.02.23
러스트 5 - 변수와 타입 #2  (0) 2019.02.16
러스트 4 - 변수와 타입 #1  (0) 2019.02.16
러스트 3 - Cargo  (0) 2019.02.10
Comments