Created
March 17, 2016 11:46
-
-
Save QuadFlask/03a697bbacb45cb53c77 to your computer and use it in GitHub Desktop.
러스트 튜토리얼 따라하기
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
extern crate rand; // Cargo.toml 에 정의한 디팬던시를 가져오기 위해 extern crate 키워드로 가져오기 | |
use std::io; // 임포트 | |
use std::cmp::Ordering; | |
use rand::Rng; | |
fn main() { | |
println!("Guess the number"); // 기본적으론 함수 호출은 그냥 노말하게 호출, 느낌표는 매크로를 호출 | |
let secret_number = rand::thread_rng().gen_range(1, 101); // 상수에 바인딩. | |
loop { // 루프 | |
println!("Please input your guess. (scret number is {})", secret_number); // {}로 리플레이서를 대신한다 | |
let mut guess = String::new(); // 새로운 스트링을 뮤터블 상수(즉 변수)에 바인딩 | |
io::stdin().read_line(&mut guess) | |
.expect("Failed to read line"); // 뮤터블 상수에 값을 넣고, 실패시 expect에 들어간 스트링 출력 | |
// (read_line의 함수 호출 결과는 Result 라는 오브젝트인데, 이라인처럼 expect 같은 함수 호출을 안하면 컴파일시 워닝이 뜸) | |
let guess: u32 = match guess.trim().parse() { // 변수 쉐도잉이라고 하는데... 굳이 guess_str, guess_int 이런식으로 할 필요 없이 변수 이름 하나로 퉁치기...?? | |
Ok(num) => num, | |
Err(_) => continue, | |
}; // 매치는 어떤 이넘 타입에 대해 패턴 매칭을 수행하는듯 | |
println!("you guessd: {}", guess); | |
match guess.cmp(&secret_number) { // 왜 함수에 값을 전달할때 &가 필요할까? | |
Ordering::Less => println!("Too small!"), // 람다 표현식처럼 사용 | |
Ordering::Greater => println!("Too big!"), | |
Ordering::Equal => { | |
println!("You win!"); | |
break; // 루프 끝내기 | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment