SEMONAN
이번 시간에는 Control flow입니다. if문과 loop문을 설명합니다.
먼저 if문을 살펴보시죠.
if문을 사용하는 방법은 다른 언어와 유사합니다.
if문이 참이면 "condition was true"를 출력하고 거짓이면 "condition was false"를 출력합니다.
다음 예제로 넘어가겠습니다.
C++에서는 int type이라고 0이면 false, 1이면 true로 처리됩니다.
그러나 Rust는 bool과 그 외 type을 명확하게 구분합니다.
int type을 if문의 조건으로 사용하면 Compile error 발생합니다. 왜냐하면 number는 bool type이 아니기 때문입니다.
다시 말하면 bool type이 아닌 변수를 if문의 조건으로 사용할 수 없습니다.
다음 예제에서는 int type에 조건 연산자를 사용했기 때문에 정상적으로 Compile 됩니다. 조건 연산자의 결과는 bool이므로 정상적으로 Compile이 됩니다.
다음 예제는 if, else if, 이며 특별한 점은 없습니다.
이번 예제는 조금 자세히 봅시다.
condition에 true을 넣었으니 Boolen type입니다.
두번째 줄은 condition이 참이면 숫자 5를 거짓이면 6을 number에 넣습니다. 여기 숫자 뒷에 세미콜론이 없죠.
리턴을 해야 되기 때문에 세미콜론이 없습니다. 이 부분은 잘 인지하고 있어야 됩니다.
Rust는 Compile time에서 모든 변수의 type이 명확해야 합니다. 이 코드는 Compile Error가 발생합니다. 5는 int type이고 "six"는 string이므로 number의 type이 모호하므로 Compile error 발생합니다. 둘 다 같은 타입이여야 Compile이 정상적으로 수행됩니다.
여기까지 Rust의 if문을 공부했는데, 특별한 점은 없었습니다.
이번에는 loop에 대해서 공부할 것인데, 아주 특별한 점이 몇 가지 있으니 잘 살펴 봅시다.
먼저, 첫번째 예제입니다.
C++에서는 while(1), while(true)등으로 무한 loop를 코딩합니다. Rust에서는 예제처럼 loop {} 로 무한 loop를 코딩할 수 있습니다.
이번 예제는 특이점이 있으니 집중하세요.
loop 옆에 'counting_up 이라고 코딩되었는데, 이것은 lable을 의미합니다.
loop문 안에 loop문이 하나 더 있습니다. 이 두번째 무한루프가 빠져 나올 수 있는 조건은 2가지가 있습니다.
remaining == 9 거나 count == 2 입니다.
remaining이 10에서 1씩 감소하여 9가 되면 break;문을 만나고, 하위 loop문을 빠져 나올 것입니다.
다시 첫번째 loop문을 진행하면서 count는 0에서 1씩 증가하면서 2가 되면 break 'countion_up을 만날 것입니다.
'countion_up 은 첫번째 loop 앞에 코딩 되어 있었는데요. 이 부분을 보시면 잠깐 느낌이 올 건데요.
break문에 'countion_up을 코딩 했다는 것은 첫번째 loop문을 빠져 나간다는 겁니다.
remaining이 9일때 탈출하는 break;와 count이 2일 때 탈출하는 break 'counting_up은 다른 것입니다.
C++의 경우 여러 loop문을 탈출하려면, flag등을 사용하여 단계적으로 탈출하는데, Rust는 label을 통해 편하게 탈출 시킬 수 있습니다.
소스 코드도 더 깔끔하게 짤 수 있고, 가독성도 더 좋아지겠죠. 이 부분은 마음에 듭니다.
다음 예제를 봅시다. 여기도 약간 특이합니다. let result라는 변수에 loop 의 결과값을 받습니다. break 결과값을 바로 받을 수 있습니다. 그리고 counter == 10이 되면 break count * 2; 즉 20이 result에 들어값니다.
예제의 while은 다른 언어와 동일하게 작동합니다. while문의 조건이 거짓일때 while이 끝나게 됩니다.
이번 예제도 특별한 것은 없습니다.
a라는 array에 5개의 값이 있고, index 변수에 0을 넣었습니다. 그리고 while문은index변수가 5보다 적을때만 작동됩니다.
while문 안에서는 index를 1씩 증가 시키고 있습니다.
이번 예제는 for in 문 인데요, foreach와 유사합니다. a라는 배열에 a의 원소 수만큼 for문을 실행합니다. a의 원소의 값을 element 변수에 받아서 출력하고 있습니다. 10부터 50까지 출력이 되겠죠.
다음 예제 코드를 보겠습니다.
여기서도 for in을 설명하는데요, (1..4)는 (int i=1; i<4; i++) 처럼 동작합니다. 그래서 1,2,3 이렇게 number에 들어가는데 .rev()를 주었기 때문에 (.rev()는 반대로 동작하라는 의미입니다.) 1,2,3의 반대로 3,2,1 로 for을 돌게 됩니다.
그래서 number 출력은 3,2,1이 됩니다.
이런 문법도 for문을 간단하게 사용할 수 있는 문법이 좋아 보입니다.
이렇게 control flow의 if, loop, while, for문에 대하여 공부 했습니다. 코딩을 간편하게 할 수 있는 새로운 문법이 마음에 듭니다.
여기까지 하겠습니다. 도움되시길 바랍니다.
Reference
https://www.youtube.com/watch?v=aVrIgqAvw7I&list=PLdvEO-IMMcPvfiBkVwgIwDf4AuTjI2aeG&index=5
'2. Back-end > >> Rust' 카테고리의 다른 글
Ownership 이란 개념 들어봤니? (0) | 2023.01.19 |
---|---|
반드시 알아야 하는 Data types! 오잉? Tuple type 있네? (0) | 2023.01.18 |
Rust 함수 사용법. 세미콜론 활용법이 독특하다! (0) | 2023.01.18 |
Rust 변수 사용법, C++과 다르네? (0) | 2023.01.18 |
Rust언어 배우고 싶은 이유, 환경구축 방법 (0) | 2023.01.18 |
댓글