13_functions direcory created

This commit is contained in:
Vinicius Silva 2023-12-30 17:57:10 -03:00
parent b71c08ad91
commit 40a590a28f
3 changed files with 119 additions and 0 deletions

View File

@ -0,0 +1,39 @@
fn sqrt(n int) int{
return n*n
}
fn cube(n int) int{
return n*n*n
}
fn run(value int, op fn(int) int) int{
return op(value)
}
pub fn main(){
println(run(5, sqrt))
double_fn := fn(n int) int {
return n + n
}
println(5, double_fn)
res := run(5, fn(n int) int{
return n+n
})
println(res)
fns := [sqrt, cube]
println(fns[0](10))
fns_map := {
'sqrt' : sqrt
'cube' : cube
}
println(fns_map['cube'](2))
}

58
13_functions/closures.v Normal file
View File

@ -0,0 +1,58 @@
pub fn main(){
my_int := 1
my_closure := fn[my_int] (){
println(my_int)
}
my_closure()
// ====================================================== //
mut i := 1
func := fn[i] () int {
return i
}
println(func() == 1)
i = 1
println(func() == 1)
// ====================================================== //
c := new_counter()
println(c())
println(c())
println(c())
mut i2 := 0
mut ref := &i2
println_counter := fn[ref] ()
{
println(*ref)
}
println_counter()
i2 = 10
println_counter()
f(dump(100),dump(200),dump(300))
}
fn f(a1 int, a2 int, a3 int){
dump(a1+a2+a3)
}
fn new_counter() fn() int{
mut i := 0
return fn[mut i] () int{
i++
return i
}
}

22
13_functions/references.v Normal file
View File

@ -0,0 +1,22 @@
struct Foo{
abc int
}
fn (foo Foo) bar_method(){}
fn (foo &Foo) bar(){
println(foo.abc)
}
fn bar_function(foo Foo){}
struct Node[T]{
val T
left &Node[T]
right &Node[T]
}
pub fn main(){
}