Last active
August 29, 2015 14:13
-
-
Save tioover/ce3997f661f6910f0b20 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// compile in rustc 1.0.0-nightly (44a287e6e 2015-01-08 17:03:40 -0800) | |
enum List<T> { // 泛型 T | |
Pair (T, Box<List<T>>), // Cons 对 | |
Nil, // 表尾符号 | |
} | |
fn main() { | |
use List::{Pair, Nil}; // 将 List 名字空间的符号导入到当前作用域。 | |
let len: i32 = 42; // 长度为42,此变量不可变。 | |
let mut list: Box<List<i32>> = Box::new(Nil); // 堆上(Box::new)创建一个表尾符号,赋给可变变量 list。 | |
for i in range(0, len) { | |
list = Box::new(Pair (i, list)) // 更新 list,将新元素添加到 list 的头部。 | |
} | |
loop { // 无限循环 | |
list = match *list { // 模式匹配 *list,并将结果赋给 list。 | |
Pair (car, cdr) => { // 如果 list 是一个二元组(序对),则取出两个部分。 | |
println!("{}", car); // 输出前项 | |
cdr // 返回后项,会被赋给 list。 | |
}, | |
Nil => break, // 直到 list 成为表尾符号,跳出循环结束程序 | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment