diff options
| author | Carol (Nichols || Goulding) <carol.nichols@gmail.com> | 2015-09-17 21:12:00 -0400 |
|---|---|---|
| committer | Carol (Nichols || Goulding) <carol.nichols@gmail.com> | 2015-09-17 21:12:00 -0400 |
| commit | 6324eeafe74867011d901f8e0c4ff74c0311771a (patch) | |
| tree | 6c46a403d4ad3b3276ee1bdd63e3f52677aeeb50 /functions | |
| parent | dbfab88e610746118b8a0c26340fb677b70e9e75 (diff) | |
Add some exercises about functions!
Diffstat (limited to 'functions')
| -rw-r--r-- | functions/functions1.rs | 43 | ||||
| -rw-r--r-- | functions/functions2.rs | 41 | ||||
| -rw-r--r-- | functions/functions3.rs | 41 | ||||
| -rw-r--r-- | functions/functions4.rs | 43 |
4 files changed, 168 insertions, 0 deletions
diff --git a/functions/functions1.rs b/functions/functions1.rs new file mode 100644 index 0000000..3004363 --- /dev/null +++ b/functions/functions1.rs @@ -0,0 +1,43 @@ +// Make me compile! Scroll down for hints :) + +fn main() { + call_me(); +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +// This main function is calling a function that it expects to exist, but the +// function doesn't exist. It expects this function to have the name `call_me`. +// It expects this function to not take any arguments and not return a value. +// Sounds a lot like `main`, doesn't it? diff --git a/functions/functions2.rs b/functions/functions2.rs new file mode 100644 index 0000000..97ed8f1 --- /dev/null +++ b/functions/functions2.rs @@ -0,0 +1,41 @@ +// Make me compile! Scroll down for hints :) + +fn main() { + call_me(3); +} + +fn call_me(num) { + for i in 0..num { + println!("Ring! Call number {}", i + 1); + } +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + +// Rust requires that all parts of a function's signature have type annotations, +// but `call_me` is missing the type annotation of `num`. diff --git a/functions/functions3.rs b/functions/functions3.rs new file mode 100644 index 0000000..3dba67c --- /dev/null +++ b/functions/functions3.rs @@ -0,0 +1,41 @@ +// Make me compile! Scroll down for hints :) + +fn main() { + call_me(); +} + +fn call_me(num: i32) { + for i in 0..num { + println!("Ring! Call number {}", i + 1); + } +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + +// This time, the function *declaration* is okay, but there's something wrong +// with the place where we're calling the function. diff --git a/functions/functions4.rs b/functions/functions4.rs new file mode 100644 index 0000000..e514b84 --- /dev/null +++ b/functions/functions4.rs @@ -0,0 +1,43 @@ +// Make me compile! Scroll down for hints :) + +// This store is having a sale where if the price is an even number, you get +// 10 (money unit) off, but if it's an odd number, it's 3 (money unit) less. + +fn main() { + let original_price = 51; + println!("Your sale price is {}", sale_price(original_price)); +} + +fn sale_price(price: i32) -> { + if is_even(price) { + price - 10 + } else { + price - 3 + } +} + +fn is_even(num: i32) -> bool { + num % 2 == 0 +} + + + + + + + + + + + + + + + + + + + +// The error message points to line 10 and says it expects a type after the +// `->`. This is where the function's return type should be-- take a look at +// the `is_even` function for an example! |
