1
0
mirror of https://github.com/rust-lang/rustlings.git synced 2025-12-01 22:51:45 +02:00

Add some exercises about functions!

This commit is contained in:
Carol (Nichols || Goulding)
2015-09-17 21:12:00 -04:00
parent dbfab88e61
commit 6324eeafe7
5 changed files with 177 additions and 0 deletions

43
functions/functions1.rs Normal file
View File

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

41
functions/functions2.rs Normal file
View File

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

41
functions/functions3.rs Normal file
View File

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

43
functions/functions4.rs Normal file
View File

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