59 lines
1.7 KiB
Rust
59 lines
1.7 KiB
Rust
fn main() {
|
|
// Das ist die Main Funktion
|
|
// Diese Funktion wird beim Aufruf von rust-script und von cargo run ausgeführt
|
|
println!("{:?}", add(400, 20));
|
|
odd(67);
|
|
random_ausgabe();
|
|
|
|
// Durch STRUCTNAME::METHODENNAME() können die Funktionen aufgerufen werden, bspw ein Konstruktor um ein neues Struct zu erzeugen
|
|
let mut r = Rechteck::new(400.0, 20.0);
|
|
r.skalieren(4.0);
|
|
println!("{:?}", r.flaeche());
|
|
}
|
|
|
|
// Das ist eine Funktion, die ein Boolean zurück gibt, Parameter können in die Klammern geschrieben werden
|
|
// Der zurückgebende Typ wird nach einem -> geschrieben
|
|
fn add(a: i32, b: i32) -> i32 {
|
|
a + b // implizites return aka wenn der letzte Ausdruck einer Methode kein ; und kein return hat, wird dieses returnt
|
|
}
|
|
|
|
// Diese Funktion hat auch einen Rückgabewert, und zwar den Unit Typ "()"
|
|
fn odd(a: i32) -> () {
|
|
if a % 2 == 1 {
|
|
println!("Ist ungerade");
|
|
} else {
|
|
println!("Ist gerade");
|
|
}
|
|
}
|
|
|
|
// Man kann das -> auch weglassen, dann wird automatisch die Unit zurück gegeben
|
|
fn random_ausgabe() {
|
|
println!("Funktion ohne Parameter und \"ohne\" Rückgabewert");
|
|
}
|
|
|
|
struct Rechteck {
|
|
hoehe: f64,
|
|
breite: f64,
|
|
}
|
|
|
|
// Ein impl, damit der Struct nicht ohne Nutzen ist
|
|
impl Rechteck {
|
|
// Self (mit GROßEM S) == Klassenname in Java
|
|
fn new(breite: f64, hoehe: f64) -> Self {
|
|
Rechteck {
|
|
breite: breite,
|
|
hoehe: hoehe,
|
|
} // wieder implizit
|
|
}
|
|
|
|
// Aufruf durch referenz.flaeche
|
|
// self (mit KLEINEM s) == this in Java
|
|
fn flaeche(&self) -> f64 {
|
|
self.hoehe * self.breite // auch implizit
|
|
}
|
|
|
|
fn skalieren(&mut self, s: f64) {
|
|
self.hoehe *= s;
|
|
self.breite *= s;
|
|
}
|
|
} |