명령줄 인수
표준 라이브러리 추가
use std::env::{args, Args};
주요 코드는 다음과 같습니다.
fn main() {
let mut arguments: Args = args();
let first_argument = arguments.nth(1).unwrap();
let operator = arguments.nth(0).unwrap().chars().next().unwrap();
let second_argument = arguments.nth(0).unwrap();
let first_number: f64 = first_argument.parse().unwrap();
let second_number = second_argument.parse::<f64>().unwrap();
let result = operate(operator, first_number, second_number);
println!("{} {} {} = {}", first_number, operator, second_number, result);
}
함수 operator()는 'char' 유형의 연산자와 일치합니다.
fn operate(operator: char, first_number: f64, second_number: f64) -> f64{
match operator {
'+' => first_number + second_number,
'-' => first_number - second_number,
'/' => first_number / second_number,
'*' | 'x' | 'X' => first_number * second_number,
=> 0.0,
}
}
예를 들어 «숫자 연산자 번호» 인수를 사용하여 실행합니다.
cargo run 1 + 2
대답은 다음과 같습니다.
1 + 2 = 3
인수는 다음과 같습니다.
{ inner: ["target/debug/calculator", "1", "+", "2"] }
첫 번째 요소는 실행 파일의 경로입니다.
인덱스로 명령줄 인수에 액세스
일부 인수가 사용되는 즉시 모든 이전 인수가 삭제됩니다.
let first_argument = arguments.nth(1).unwrap();
인수:
{ inner: ["+", "2"] }
따라서 우리는 0번째 인수를 취해야 합니다.
let operator = arguments.nth(0).unwrap().chars().next().unwrap();
인수:
{ inner: ["2"] }
그리고 다시 우리는 0번째 인수를 취해야 합니다.
let second_argument = arguments.nth(0).unwrap();
인수:
Args { inner: [] }
그래서
args.nth(1) = 1
args.nth(0) = +
args.nth(0) = 2
테스트해 봅시다:
#[test]
fn add() {
assert_eq!(3.0, operate('+', 1.0, 2.0) );
}
#[test]
fn substruct() {
assert_eq!(3.0, operate('-', 5.0, 2.0) );
}
#[test]
fn multiply() {
assert_eq!(4.0, operate('*', 2.0, 2.0) );
assert_eq!(4.0, operate('x', 2.0, 2.0) );
assert_eq!(4.0, operate('X', 2.0, 2.0) );
}
#[test]
fn divide() {
assert_eq!(3.0, operate('/', 6.0, 2.0) );
}
#[test]
fn error() {
assert_ne!(2.0, operate('u', 4.0, 2.0) );
}
Reference
이 문제에 관하여(명령줄 인수), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/antonov_mike/command-line-arguments-17ce텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)