Localized V2 rewrite for this language is in progress. Showing English-first content for now.

Συναρτήσεις

Ορισμός συναρτήσεων, τιμές επιστροφής και effect annotations.

Συναρτήσεις

Οι συναρτήσεις στο Sounio είναι expressions: η τελευταία έκφραση σε ένα block είναι η τιμή επιστροφής.

Βασικές Συναρτήσεις

fn add(a: i32, b: i32) -> i32 {
    a + b
}

fn greet(name: string) {
    print("Hello, ")
    println(name)
}

Κλήσεις Συναρτήσεων

let sum = add(3, 5)  // 8
greet("World")       // Hello, World!

Δήλωση Effects

Η spec απαιτεί τα side effects να δηλώνονται μέσω with ... στην υπογραφή της συνάρτησης.

fn log(msg: string) with IO {
    println(msg)
}

Μπορούν να συνδυαστούν πολλαπλά effects:

fn safe_div(a: i32, b: i32) -> i32 with Panic {
    if b == 0 {
        panic("division by zero")
    }
    a / b
}

Μέθοδοι (impl)

Μπορείτε να ορίσετε συναρτήσεις πάνω σε types:

struct Point {
    x: f64,
    y: f64,
}

impl Point {
    fn new(x: f64, y: f64) -> Point {
        Point { x: x, y: y }
    }

    fn distance(&self, other: &Point) -> f64 {
        let dx = self.x - other.x
        let dy = self.y - other.y
        sqrt(dx * dx + dy * dy)
    }
}

Spec note: generics, closures και higher-order συναρτήσεις υποστηρίζονται από το design, αλλά κάποιοι συνδυασμοί μπορεί να εξελίσσονται ακόμα στον compiler.

Τι Ακολουθεί;