Another update from ingydotnet^djgoku
This commit is contained in:
parent
91df62d461
commit
948b86eafa
7604 changed files with 108452 additions and 22726 deletions
|
|
@ -0,0 +1,16 @@
|
|||
@interface Tree<T> : NSObject {
|
||||
T value;
|
||||
Tree<T> *left;
|
||||
Tree<T> *right;
|
||||
}
|
||||
|
||||
- (void)replaceAll:(T)v;
|
||||
@end
|
||||
|
||||
@implementation Tree
|
||||
- (void)replaceAll:(id)v {
|
||||
value = v;
|
||||
[left replaceAll:v];
|
||||
[right replaceAll:v];
|
||||
}
|
||||
@end
|
||||
|
|
@ -5,38 +5,42 @@ struct TreeNode<T> {
|
|||
}
|
||||
|
||||
impl <T> TreeNode<T> {
|
||||
fn my_map<U>(&self, f: |t: &T| -> U) -> TreeNode<U> {
|
||||
TreeNode{value: f(&self.value),
|
||||
left:
|
||||
match self.left {
|
||||
None => None,
|
||||
Some(ref n) => Some(box() n.my_map(|n| f(n))),
|
||||
},
|
||||
right:
|
||||
match self.right {
|
||||
None => None,
|
||||
Some(ref n) => Some(box() n.my_map(|n| f(n))),
|
||||
},}
|
||||
fn my_map<U,F>(&self, f: &F) -> TreeNode<U> where
|
||||
F: Fn(&T) -> U {
|
||||
TreeNode {
|
||||
value: f(&self.value),
|
||||
left: match self.left {
|
||||
None => None,
|
||||
Some(ref n) => Some(Box::new(n.my_map(f))),
|
||||
},
|
||||
right: match self.right {
|
||||
None => None,
|
||||
Some(ref n) => Some(Box::new(n.my_map(f))),
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let root =
|
||||
TreeNode{value: 3i,
|
||||
left:
|
||||
Some(box() TreeNode{value: 55i,
|
||||
left: None,
|
||||
right: None,}),
|
||||
right:
|
||||
Some(box() TreeNode{value: 234i,
|
||||
left:
|
||||
Some(box() TreeNode{value: 0i,
|
||||
left: None,
|
||||
right:
|
||||
None,}),
|
||||
right: None,}),};
|
||||
root.my_map(|x| { println!("{}" , x)});
|
||||
let root = TreeNode {
|
||||
value: 3,
|
||||
left: Some(Box::new(TreeNode {
|
||||
value: 55,
|
||||
left: None,
|
||||
right: None,
|
||||
})),
|
||||
right: Some(Box::new(TreeNode {
|
||||
value: 234,
|
||||
left: Some(Box::new(TreeNode {
|
||||
value: 0,
|
||||
left: None,
|
||||
right: None,
|
||||
})),
|
||||
right: None,
|
||||
})),
|
||||
};
|
||||
root.my_map(&|x| { println!("{}" , x)});
|
||||
println!("---------------");
|
||||
let new_root = root.my_map(|x| *x as f64 * 333.333f64);
|
||||
new_root.my_map(|x| { println!("{}" , x) });
|
||||
let new_root = root.my_map(&|x| *x as f64 * 333.333f64);
|
||||
new_root.my_map(&|x| { println!("{}" , x) });
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue