函数
Read more...
fn line(a: int, b: int, x: int) -> int {
return a * x + b;
}
使用fn定义个函数,参数是在括号里边的name:type对,->后面跟返回值类型。
最后一行没有分号,可以省略return,将最为整个代码段的值返回。返回空或者(),可以不写返回类型。函数参数支持模式匹配。
fn first((value, _): (int, f64)) -> int { value }
析构函数
析构函数用来定义处理文件,socket,对内存的释放。当不再访问之后,对象的析构函数将被调用,防止访问释放的资源可能会产生的动态错误。当一个任务失败,在任务中的所有对象析构函数将被调用。
定义一个链表
enum List {
Cons(...),
Nil
}
enum List {
Cons(u32, ~List),
Nil
}
哈哈 像极了clisp里边的列表, Cons应该是一个元组,元组第一个元素u32,第一个元素指向list的下一个元素。
上边的定义类似递归的思想,list有两种情况,nil是list,Cons(u32, ~List)也是list。第二种情况里边又包含一个list,这个list也应该是前边两种类型。哈哈
Cons这个名字可以随便起的,不过最好还是不改的。官方文档没有说明,多少有点疑惑(读英文文档也没自信,不知道对不对)
波浪号是必须的,表示一个指向list类型值的指针。
let list = Cons(1, ~Cons(2, ~Cons(3, ~Nil)));