This course will be retired on July 14, 2025.
Heads up! To view this whole video, sign in with your Courses account or enroll in your free 7-day trial. Sign In Enroll
Well done!
You have completed Introduction to Scala!
You have completed Introduction to Scala!
Preview
In this video we will learn to build our first Scala app.
Related Discussions
Have questions about this video? Start a discussion with the community and Treehouse staff.
Sign upRelated Discussions
Have questions about this video? Start a discussion with the community and Treehouse staff.
Sign up
In this video,
we will build our first Scala app.
0:00
We'll learn how to create functions for
loops, guards, and k statements.
0:03
I'll be using IntelliJ as my IDEA.
0:08
And I've included a link in the teacher
notes if you'd like to download the IDEA
0:10
and follow along.
0:15
Let's fire up IntelliJ.
0:17
Click create new project.
0:19
Choose Scala from the list, click next,
and provide a project name.
0:21
Click finish.
0:27
In the project source directory, we'll
right click and create a use Scala class.
0:29
For now we'll create
an object called superheroes.
0:36
Within that, we will create a main
functions that prints out Hello World.
0:44
Let's compile and run our application.
1:04
On the upper right hand corner,
1:06
we'll click the down arrow,
click edit configurations,
1:08
click the plus sign to add a new
configuration to run as an application.
1:11
And for our main class,
we'll select our super heros object.
1:17
We can also provide a name for
this configuration.
1:23
Then we'll click Apply,
and then select OK.
1:27
To run our app we'll
click on the green arrow.
1:31
Great, we've created our first Scala app
which prints Hello World to the screen.
1:35
For the next few examples, we'll be
using what is known as a work sheet.
1:40
A Scala file which is evaluated on save.
1:43
Scala work sheets are very useful as they
can show the output of our expressions
1:46
on the right hand side.
1:51
To define a function in Scala, we use the
def keyword along with a functions name,
1:52
followed by a comma
separated list of parameters
1:57
we will like to pass in a function body.
2:01
For each parameter we will have to provide
the type annotation proceeded [SOUND] by
2:03
a colon.
2:08
As a Scala compiler cannot
infer function parameter types.
2:08
We'll right click the root of
our directory, select new.
2:13
Then click on Scala Worksheet, and then
we'll provide a name for our worksheet.
2:18
In our case, we'll call it functions.
2:23
The following code creates a function name
multiplied by two, which takes in a single
2:48
integer parameter followed by
an equal sign in the function body.
2:53
The function checks of x is equal to zero
in which case it'll return the value of x
2:57
or otherwise both applies
multiplies x by two.
3:02
The last expression evaluated in
a function is always returned.
3:04
So you don't have to explicitly call
return as you might do so in Java.
3:08
Also, it is almost always not necessary
to provide the result type of a function.
3:13
Look at a case where it is
required here in a bit.
3:18
To explicitly return the type would
have to add a colon followed by the type
3:21
annotation before the equal
sign in our function like so.
3:26
Scala also supports the fold arguments for
functions.
3:32
So if an argument is not passed, they'll
provide the default value to the function.
3:36
Additionally, if a function
body exceeds to multiple lines.
3:40
You can used a block implement your code.
3:45
Let's take a look.
3:47
In this case, X will default to ten and
we'll multiply the value passed in for
4:08
the variable Y.
4:12
This is exactly how we would invoke the
function with one parameter which would
4:14
return 50 as variable Y takes the value
five and variable X is defaulted to ten.
4:18
And as you can see on the right-hand
side the result of our function call
4:25
is equal to 50.
4:29
In Java, you may have come across
functions that don't return anything.
4:31
We try to find with
the return type of void.
4:35
Similarly in Scala, you can create
functions that don't return anything
4:37
by setting the result type to unit.
4:42
Let's take a look
4:44
Here we've created a function called
greeting which does not return a value but
4:55
simply prints out
Hello World to the screen.
4:59
Earlier we mentioned that there's a case
when we need to explicitly provide
5:05
the return type of a function.
5:08
In Scala, we need to do so
with the recursive function.
5:11
A recursive function is
a function which calls itself.
5:14
Finding the factorial of a number is
easily implemented as a recursive
5:17
function.
5:21
Great.
5:42
Unlike Java,
Scala does not directly support the for
5:44
statement you may be familiar with.
5:47
Let's dive into Scala loops and
see how they differ.
5:50
You can read the left arrow as, in.
6:03
So for i in one to ten, print i.
6:06
Therefore, we loop from one to ten and
print the element i.
6:10
In this case, one to ten creates an
immutable range, and it's also inclusive.
6:13
For an exclusive range,
we can use the keyword until.
6:18
The form variable left arrow
expression is known as a generator.
6:30
Each generator in Scala can have a guard,
which is a boolean condition preceded by
6:35
an if that allows for processing of
elements that match the condition.
6:39
In this example, we use a guard which
allows for processing of the range and
6:58
we print all the even
numbers from one to ten.
7:02
A for comprehension is a type of loop
which returns a collection of values.
7:05
These are great for
iterating over collections and
7:09
attaining a new collection
of the same type.
7:11
We can achieve this in Scala
with the yield keyword.
7:14
As we can see,
7:31
yield creates a new immutable
collection which is stored in numbers.
7:32
Scala also provides a very
useful case statement
7:37
which is similar to Java switch statement.
7:40
Let's take a look at how that works
7:43
The last line, the case_ is the catch-all
phrase which you always want to provide.
8:17
Otherwise if a match is not found
there will be a match error thrown.
8:23
This is similarly specified using
the default keyword in Java However
8:27
unlike Java switch statements,
there's no fall through problem.
8:33
So we do not need to have a break
statement after each case.
8:36
We can also save the result into value or
8:40
even create a function
based on pattern matching.
8:42
Calling findAge passing the number 20,
9:36
returns us the age as a string
with a value 20, great.
9:39
You need to sign up for Treehouse in order to download course files.
Sign upYou need to sign up for Treehouse in order to set up Workspace
Sign up