이번 편의 목표: 제목과 연체 일수를 하나의 책 값으로 묶고, 그 값에 연체료 계산을 붙입니다.
struct는 필드의 묶음입니다. impl 블록 안의 함수는 그 타입의 메서드입니다. 첫 매개변수가 &self이면 그 책의 필드를 읽습니다. 필드를 바꿀 때는 &mut self를 씁니다.
struct Book {
title: String,
days: i32,
}
impl Book {
fn fee(&self) -> i32 {
if self.days <= 0 { 0 } else { self.days * 100 }
}
}
fn main() {
let book = Book {
title: String::from("생각나무"),
days: 2,
};
println!("{} {}", book.title, book.fee());
}출력은 생각나무 200입니다. book.fee()는 book을 빌립니다. title의 소유권은 여전히 book에 있습니다. days가 0 이하이면 연체료는 0입니다. 음수 일수를 구조체가 아예 받지 않게 하려면, 필드를 비공개로 두고 검사하는 연관 함수를 둡니다. 필드를 숨기는 일은 13편에서 파일을 나눌 때 같이 적용합니다.
직접 해 보기
days를 4로 바꿔 출력이 생각나무 400인지 확인하세요.
해설
하루 100원이고 4일이므로 400입니다. fee의 조건은 0 이하만 0으로 두고, 양수는 일수에 100을 곱합니다.
COMMENTS
댓글 0
이 글에 대한 의견이나 질문을 남겨 주세요.
댓글은 구글이나 카카오로 시작한 뒤에 남길 수 있습니다.
등록된 댓글이 없습니다.