summaryrefslogtreecommitdiff
path: root/functions
diff options
context:
space:
mode:
authorCarol (Nichols || Goulding) <carol.nichols@gmail.com>2015-09-17 21:12:00 -0400
committerCarol (Nichols || Goulding) <carol.nichols@gmail.com>2015-09-17 21:12:00 -0400
commit6324eeafe74867011d901f8e0c4ff74c0311771a (patch)
tree6c46a403d4ad3b3276ee1bdd63e3f52677aeeb50 /functions
parentdbfab88e610746118b8a0c26340fb677b70e9e75 (diff)
Add some exercises about functions!
Diffstat (limited to 'functions')
-rw-r--r--functions/functions1.rs43
-rw-r--r--functions/functions2.rs41
-rw-r--r--functions/functions3.rs41
-rw-r--r--functions/functions4.rs43
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!