때로는 프로그램이 사용자에게 동적 값을 포함하는 메시지를 구사하기위한 다양한 방법이 있습니다. 예 :형식 문자열을 무작위로 선택하는 방법
- "{} 분 남음"
- "{} 분 이내에 끝내야합니다."
메시지의 일부가 단순 접두사 또는 접미사로 사용 된 것은 아닙니다. 동적 언어에서는 문자열 서식 지정의 논리적 작업처럼 보였습니다.
pub fn h(x: usize) -> String {
rand::sample(rand::thread_rng(), vec![
format!("{} minutes remain.", x),
format!("Hurry up; only {} minutes left to finish.", x),
format!("Haste advisable; time ends in {}.", x),
/* (insert many more elements here) */
], 1).first().unwrap_or(format!("{}", x))
}
은 다음과 같습니다 :
반복성은 바람직하지 않다 미디어(예 여유 채널) 같은 것을 사용하여 출력에 각각 최종 String
을 생산하는 많은 다른 어법이있다
- 지루한에 저자는 매번
format!(/*...*/, x)
을 타이핑하는 것과 관련하여 - 하나의 가능성이 선택되기 전에 모든 가능성이 완전히 생성되기 때문에 낭비가 많고 다른 것들은 폐기됩니다.
이러한 단점을 피할 수있는 방법이 있습니까?
형식 문자열을 컴파일 타임으로 평가하지 않았 으면 무작위로 선택된 &'static str
(정적 슬라이스에서)을 format!
에 전달하는 함수가 선호되는 솔루션이었을 것입니다.
관련 항목 : [어떻게 동적 형식 문자열을 형식으로 사용할 수 있습니까? 매크로?] (http://stackoverflow.com/q/32572486/155423). – Shepmaster
무작위로 숫자를 생성하고 'match'를 사용하여 형식을 지정할 문자열을 선택했다고 생각하십니까? 모든 문자열을 생성 한 다음 멀리 던지는 것을 피할 수 있습니다. – Aurora0001