러스트 튜토리얼 (2) - 변수/데이터타입/함수/주석/제어문

DaeyeolKim·2022년 5월 13일
0

러스트 내공부

목록 보기
2/4

변수와 가변성

  • 기본 변수는 불변성(Rust가 제공하는 안정성 동시성을 취하기 위함)
let a = 10
let a = 20 (o)
a = 30(x)

변수 상수간 차이

  • 상수는 mut이 허용되지 않음
const MAX_POINTS: u32 = 100_000;

shadowing

  • 이전에 선언한 변수와 같은 이름의 변수를 선언할 수 있고, 이전값을 그대로 사용하는 것을 Shadow라고 함
  • mut과 shadowing의 차이는 let 키워드를 다시 사용하여 효과적인 새변수 선언, 값의 유형 변경이 가능하다는 점입니다.
    fn main() {
        let x = 5;
        let x = x + 1;
        let x = x * 2;
        println!("The value of x is: {}", x);
    }
fn main() {
let spaces = "   ";
let spaces = spaces.len();
}

--> 변수유형이 바뀜으로 컴파일 에러

데이터 타입

  • 러스트는 타입이 고정된 언어입니다.

  • 정수형


- isize와 usize는 컴퓨터 아키텍쳐를 따릅니다.
- i32가 제일 연산 속도가 빠릅니다.
  • 부동 소수점

    fn main() {
    let x = 2.0; // f64
    let y: f32 = 3.0; // f32
    }

    - IEEE-754 표준을 따릅니다.

수학 연산

fn main() {
    // addition
    let sum = 5 + 10;

    // subtraction
    let difference = 95.5 - 4.3;

    // multiplication
    let product = 4 * 30;

    // division
    let quotient = 56.7 / 32.2;

    // remainder
    let remainder = 43 % 5;
}

Boolean

fn main() {
    let t = true;

    let f: bool = false; // with explicit type annotation
}

문자

fn main() {
   let c = 'z';
   let z = 'ℤ';
   let heart_eyed_cat = '😻';
}

튜플

fn main() {
    let tup: (i32, f64, u8) = (500, 6.4, 1);
}

배열

fn main() {
    let a = [1, 2, 3, 4, 5];
}

함수

  • 함수 정의 위치는 중요하지 않음
  • 매개변수는 (변수명 : datatype)형태로 표기
fn main() {
    another_function(5);
}

fn another_function(x: i32) {
    println!("The value of x is: {}", x);
}

반환 값이 있는 함수

  • 반환값의 타임은 -> 뒤에 선언해야합니다.
  • return 을 사용하지만, 암묵적으로 마지막 표현식을 반환 합니다.
fn five() -> i32 {
    5
}

fn main() {
    let x = five();

    println!("The value of x is: {}", x);
}

제어문

  • 일반적인 if-else if 이용
fn main() {
    let number = 6;

    if number % 4 == 0 {
        println!("number is divisible by 4");
    } else if number % 3 == 0 {
        println!("number is divisible by 3");
    } else if number % 2 == 0 {
        println!("number is divisible by 2");
    } else {
        println!("number is not divisible by 4, 3, or 2");
    }
}
  • let 구문에서도 if-else 사용 가능(삼항 연산자 같은 느낌)
fn main() {
    let condition = true;
    let number = if condition {
        5
    } else {
        6
    };

    println!("The value of number is: {}", number);
}

반복문

  • loop
fn main() {
    loop {
        println!("again!");
    }
}
  • while
fn main() {
    let mut number = 3;

    while number != 0 {
        println!("{}!", number);

        number = number - 1;
    }

    println!("LIFTOFF!!!");
}
  • for
fn main() {
    for number in (1..4).rev() {
        println!("{}!", number);
    }
    println!("LIFTOFF!!!");
}

-> 4에서 1로 큰수에서 작은수로 내려가며 반복한다.

profile
BioSignal Processing/ Deep Learning/ Block Chain

0개의 댓글