Please enable JavaScript to view the comments powered by Disqus.Rust의 Functions, parameters, statement, expressions
Search
🎇

Rust의 Functions, parameters, statement, expressions

태그
Rust
공개여부
작성일자
2023/09/16
Rust에서 function은 널리 사용된다.
Rust에서의 컨벤션은 snake_case 로 function을 정의한다.
fn main() { call_me(3); } fn call_me(num:i8) { for i in 0..num { println!("Ring! Call number {}", i + 1); } }
Rust
복사
코드를 보면 call_me 는 main 함수 이후에 정의 되어 있지만, main 함수 전에 정의해도 상관없다.
어디든지 scope에서 볼 수 있는 곳에 declared 이면 호출하여 사용할 수 있다.

Parameters

fn main() { call_me(100); } fn call_me(num: u32) { for i in 0..num { println!("Ring! Call number {}", i + 1); } }
Rust
복사
Function 에서 parameter는 각각의 type을 정의해두어야 한다.
만약, param의 개수가 다양하다면 , 로 분리한다.
fn main() { print_labeled_measurement(5, 'h'); } fn print_labeled_measurement(value: i32, unit_label: char) { println!("The measurement is: {value}{unit_label}"); }
Rust
복사

Statements and Expressions

Function의 body는 expression(표현식)으로 끝나는 일련의 statement(문)으로 구성된다.
지금까지의 함수에서는 종료 expression이 포함되어 있지 않았지만, function body의 일부인 것이 나타났다.
Rust는 expression-basee 이기 때문이다.
Statements
어떠한 action을 수행하지만 값을 반환하진 않는다.
코드의 동작을 정의하며 무언가를 수행하거나 작업을 실행한다.
let x = 4;
Expressions
결과값을 계산한다.
변수에 값을 할당할 수 있다.
if, while, for etc.

Statements

Function의 정의도 statements 이다. statement 자체는 값을 반환하는 것이 아니기 때문에 다음 코드는 에러를 반환한다.
fn main() { let x = (let y = 6); }
Rust
복사
이러한 특징은 C, Ruby 와 같은 다른 언어와 다르다.
다른 언어들은 x = y = 6 이 코드의 동작으로 x, y 모두 6을 binding 하지만 rust에선 그렇지 않다.

Expressions

Expressions은 value으로 평가(evaluate)되어 작성하게 될 나머지의 rust 대부분을 구성한다.
예를들어, 2 + 3 은 expression 이며 5로 evaluate 된다.
이러한 expression은 statements의 부분이다.
함수를 호출하는 것, macro를 호출하는 것도 expression 이다.

Function with Return Values

Return value의 이름을 명시하진 않지만, 함수 뒤에 -> 를 입력하고 :type 을 명시해야 한다.
fn five() -> i32 { 5 } fn main() { let x = five(); println!("The value of x is: {x}"); }
Rust
복사
이 main 함수의 결과는 아래와 같다.
The value of x is: 5
Plain Text
복사
five 의 결과는 5 이고 x 를 5로 초기화 한다.
let x = 5;
Rust
복사
여기서 한 가지 더 봐야하는 것은 5 에는 semicolon ; 이 없다.