Skip to content

Latest commit

 

History

History
136 lines (115 loc) · 3.87 KB

Study2.md

File metadata and controls

136 lines (115 loc) · 3.87 KB

Rust 스터디 2회차

보편적인 프로그래밍 개념

  • 변수, 기본 타입들, 함수, 주석, 제어문에 대해 알아봄.

3.1 변수와 가변성

  • 기본 변수는 불변성.
  • 변수명의 접두어로 mut 키워드를 사용해 가변성 변수를 선언할 수 있음.
  • const 상수가 따로 있음
  • let 변수와 const 상수의 차이
    • const: 실행 시작부터 종료까지 절대 변경하지 않는 값
    • Shadowing 사용 가능 여부.
  • let으로 선언한 변수는 결국 변수
    • 기본적으로 변경 가능하나, 언어 차원에서 방지하는 느낌
  • const는 컴파일 타임에 평가가 됨
    • const가 아닌 불변 변수는 런타임에 평가가 된다.
  • shadowing에 대한 유용성 및 개발자 실수 의문
    • 결국 소유권 개념이 있어서 문제 없을 듯

3.2 데이터 타입들

스칼라

  • 정수형, 부동소수점, Boolean 문자 등.
  • _을 사용해 시각적인 구분 사용 가능.
  • isize, usize: 아키텍처에 따라 32bit or 64bit.
  • char 는 Unicode
  • ANSI를 char로 담기에는 변환이 필요할 듯

컴파운드

  • 배열, 튜플 등.

튜플

let tup = (500, 6.4, 1);
let (x, y, z) = tup;
  • 각 요소 타입이 다를 수 있음.
  • 요소 접근: '.[index]'

배열

  • 요소 타입을 통일해야 함.
  • 요소 접근: 'array[index]'
  • index가 배열 길이를 초과할 경우 panic이 발생함.

3.3 함수 동작 원리

fn plus_one(x: i32) -> i32 {
    x + 1
}
  • 함수의 마지막에표현식을 사용해서 반환.
    • return 키워드를 사용하여 중간에 반환할 수도 있음.
  • 함수의 기대와 다르게 값을 반환하지 않을 ()이 반환됨.

구문과 표현식

  • 구문(statement)
    • 세미콜론으로 끝남
    • 반환값이 없음.
  • 표현식(expression)
    • 세미콜론 없이 끝남
    • 반환값 있음.

3.4 주석

  • '//': 코멘트에 권장.
  • '/* */': 코드 권장.
  • '///': 문서주석.

3.5 제어문

if / else if

  • 조건은 무조건 Boolean이어야 함.
  • 표현식 구문으로 넣을 수 있음
fn main() {
    let condition = true;
    let number = if condition {
        5
    } else {
        6
    };

    println!("The value of number is: {}", number);
}
  • 표현식 타입은 같아야 함(컴파일 타임에 assign이 결정되어야 하기 때문)
fn main() {
    let condition = true;

    let number = if condition {
        5
    } else {
        "six"
    };

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

반복문과 반복

loop

  • 무한루프

while

  • while 조건에 따라 분기

for

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

다음 과제

  • 화씨와 섭씨를 상호 변환.
  • n번째 피보나치 수열 생성.
  • 크리스마스 캐롤 “The Twelve Days of Christmas”의 가사를 반복문을 활용해 출력.

다음 범위

  • 4장, 5장, 6장
  • github에 본인 ID로 서브 폴더 만들고 과제 커밋하기
  • 과제 폴더명은 자유롭게 하되 prefix "chapter3_" 정도 추가

다음 스터디

  • 6월 15일 오후 5시~7시 예정

회고

  • 이지한: 너무 짧아서 아쉬워요.(일찍 끝나서 좋기도..😀👍) 그리고 기록 속도랑 발표 속도를 좀 맞추면서 하면 좋을 것 같아요.
  • 허신: Shadowing! 흥미로웠어요
  • 정연집: 기존에 알던 언어들과 다른 내용들이 점차적으로 보여 흥미롭습니다~!!
  • 유병조: 다음주가 소유권에 대한 내용인데 기대되요
  • 이명수: 다음주에는 더 분발해야겠어요.. ㅎㅎ
  • 김기덕: 👍이번장 마지막에 과제가 있어서 공부한 내용을 적용해볼 수 있을 것 같아 더 재밌어지고 있습니다!
  • 이재현: 구문, 표현식 부분이 흥미로웠어요!