#[std]
// The number of memory cells the `Date` type consumes
struct Date {
let month: num,
day: num,
year: num;
fn new(month: num, day: num, year: num) -> Date {
return [month, day, year]
}
fn birthday() -> Date {
return Date::new(5, 14, 2002);
}
fn tomorrow(self: &Date) { self->day = self->day + 1; }
fn yesterday(self: &Date) { self->day = self->day - 1; }
fn next_week(self: &Date) {
for i in 0..7 {
self.tomorrow();
}
}
fn print(self: &Date, is_american: bool) {
if is_american {
prn!(self->month); prc!('/');
prn!(self->day); prc!('/');
prn!(self->year);
} else {
prn!(self->day); prc!('/');
prn!(self->month); prc!('/');
prn!(self->year);
}
}
fn println(self: &Date, is_american: bool) { self.print(is_american); prend!(); }
}
fn main() {
let bday: Date = Date::birthday();
bday.println(true); // American
bday.println(false); // Non-American
// Increment the day value
bday.tomorrow();
bday.println(true); // American
bday.println(false); // Non-American
// Increment the day value seven times
bday.next_week();
bday.println(true); // American
bday.println(false); // Non-American
}