Funções
Definição de funções, valores de retorno e anotações de efeitos.
Funções
Em Sounio, funções são expressões: a última expressão de um bloco é o valor de retorno.
Funções Básicas
fn add(a: i32, b: i32) -> i32 {
a + b
}
fn greet(name: string) {
print("Hello, ")
println(name)
}
Chamadas de Função
let sum = add(3, 5) // 8
greet("World") // Hello, World!
Declaração de Efeitos
A especificação exige que efeitos colaterais sejam declarados com with ... na assinatura da função.
fn log(msg: string) with IO {
println(msg)
}
Vários efeitos podem ser combinados:
fn safe_div(a: i32, b: i32) -> i32 with Panic {
if b == 0 {
panic("division by zero")
}
a / b
}
Métodos (impl)
Funções podem ser definidas em 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 da spec: genéricos, closures e funções de ordem superior fazem parte do design, mas algumas combinações podem ainda estar evoluindo no compilador.