0
에 대한 루프 내에서 할당되지 않습니다 : I 출력 verse(1)
으로문자열 반환 값이 코드 조각을 감안할 때 녹
pub fn verse(start_bottles: i32) -> String {
let mut song_template: String = "%1 of beer on the wall, %2 of beer.\n%3, %4 of beer on the wall.\n".to_string();
match start_bottles {
0 => lyrics_no_bottles(&mut song_template),
1 => lyrics_one_bottle(&mut song_template),
2 => lyrics_two_bottles(&mut song_template),
_ => lyrics_more_bottles(&mut song_template, start_bottles)
}
song_template
}
pub fn sing(first: i32, last: i32) -> String {
let mut song: String = "".to_string();
for num in (8..6).rev() {
song = verse(1);
}
song
}
는 그것을 잘 작동합니다 - 테스트 문자열이 나타나고 완료됩니다. 그러나 verse(1)
의 결과를 String
바인딩 song
에 할당하면 song
은 비어있는 것 같습니다. 나는이 행동을 이해하지 못한다.
오른쪽에있는 문자열이 이미 문자열 일 때 ('to_string()'을 사용하는 경우) 명시적인'String' 유형 주석을 제거 할 수 있습니다.). –
가독성을 위해 보관 ... 모든 경우에 많은 추측을 좋아하지는 않습니다 ... 언제나 유형을보고 싶습니다. – xetra11
완전히 이해할 수 있지만 커뮤니티 내에서 하나의 코딩 스타일을 결정하는 것이 중요합니다. 언어의 새 이주자가 잘못 생각하더라도 모든 사람들이 다른 사람들의 코드를 빨리 읽을 수 있습니다. 하지만 이것은 SO 주석 섹션에서 해결할 수있는 것이 아닙니다. :) –