Funciones
Definir funciones, valores de retorno y anotaciones de efectos.
Funciones
En Sounio, las funciones son expresiones: la última expresión en un bloque es el valor de retorno.
Funciones Básicas
fn add(a: i32, b: i32) -> i32 {
a + b
}
fn greet(name: string) {
print("Hello, ")
println(name)
}
Llamadas a Funciones
let sum = add(3, 5) // 8
greet("World") // Hello, World!
Declaración de Efectos
La spec requiere que los efectos colaterales se declaren con with ... en la firma de la función.
fn log(msg: string) with IO {
println(msg)
}
Se pueden combinar múltiples efectos:
fn safe_div(a: i32, b: i32) -> i32 with Panic {
if b == 0 {
panic("division by zero")
}
a / b
}
Métodos (impl)
Las funciones se pueden definir sobre tipos:
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)
}
}
Nota de la spec: genéricos, closures y funciones de orden superior forman parte del diseño, pero algunas combinaciones pueden seguir evolucionando en el compilador.