Another update from ingydotnet^djgoku

This commit is contained in:
Ingy döt Net 2015-11-18 06:14:39 +00:00
parent 91df62d461
commit 948b86eafa
7604 changed files with 108452 additions and 22726 deletions

View file

@ -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

View file

@ -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) });
}