Scala Tutorial

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
well hello internet and welcome to my scallop video tutorial in this one to Toro I'm going to teach you pretty much everything you would learn from a standard 200 page book on Scala I'm going to teach you how to install everything and we're going to work in the terminal and we're also going to work with compiled Scala code as well and you may ask yourself oh why would I care to learn Scala well Scala is the perfect choice if you want to explore the world of functional programming without completely disregarding object-oriented programming it has both and on top of that what's awesome is Skylar runs on the jell of a virtual machine which means that it's going to have a ton of libraries ready for you to use there's anyone to bring up I answer every comment that I get down below the only situation which I cannot physically answer your comment is if you do not have a Google+ account so if I don't answer your comment that is the reason why I just wanted to bring that up because it's come up a lot lately alright let's jump over and I'm going to show you how to install it on both a Mac as well as on a Windows computer ok so if you're on Windows or you're on Mac you're on Linux or whatever you're going to need the java virtual machine so you're gonna want to go to Java comm /en or maybe not just download the java virtual machine click on free Java download data and do all that stuff and get that installed because that is required if you are on a Mac it's pretty easy to install what you're going to want to do is to go to brew dot SH and install homebrew and then inside of your terminal on your Macintosh computer you're just going to type in brew install Scalla that's it hit enter that everything's going to install for you might need to update it and that's it so that's all you need to do to install on a Mac now I'm going to show you how to install on Windows now of course you're going to need the java virtual machine just like before but you're also going to need to go to Scala - Lang org and then download and then all windows you're going to click on this guy right here it's going to pop up a little message at the bottom make sure you want to save it click on save and then it's going to start installing everything for you and this is just basically going to be a whole bunch of next clicking so click on next and then it's going to have this click right there and then click on next everything here is fine click on next and then click on install it's going to take a little bit of time to install and you just have to wait for that to happen and then what you're going to want to do is you want to type in en vir environment variables whatever and then you're going to click on edit the system environment variables the reason why we're doing this is we need to put Scala in your path so you're going to want to click on environment variables this guy is going to pop up you're going to want to click on path and you're going to click on edit then and then you're going to want to copy and paste the location for the bin folder for skala on your Windows machine and click on OK and then after you do all that you're going to be able to go into your command line and then just type in the location for Scala and it's going to be ready to go so the only difference between what I'm doing here is I'm going to be using a Macintosh but aside from that everything will be precisely the same and for anybody that wonders I use notepad plus plus on Windows and I use sublime text on a Macintosh so enough talking about installation let's start writing some code ok so right now I'm in the terminal and if I want to I'm going to do some work inside of what's called the repo or the read evaluates print loop and then I'm also going to work with compiled Scala code to give you an example of using both of them so you can see I'm logged into this and I can just simply come in here and do some addition and of course all of the code I use here is available in a link in the description there you can say I went and just threw in a whole bunch of calculations and automatically popped back not only this solution but it also assigned it to this variable right here once again I'm inside of the terminal where the command line if you're on Windows you're also going to be able to come in here and do things like your answer and then plus and then use 0 which is this guy right here and you're going to see that it pops back that information you're only going to use semicolons in Scala if you have multiple statements per line but if you feel comfortable using semicolons everywhere to end all your statements feel free to do that as well you're also going to be able to come in here and do things like create different variables and it's automatically going to decipher the data type based off of whatever data you store inside of it so this is a string as it says right there and you can see right there it says this is an integer now whenever you define a variable with var that means this value is going to be able to change however if you go and define a variable with Val and my h40 that is going to be a constant and this value is not going to be able to change so var is able to change and vow is not you can just think of it like a variables value can change well a value itself can never change now there's numerous different data types available in Scalla and you can see here how to comment just two forward slashes and if you want to do a multi-line comment you can just do multi-line like that and then another star to close that off whoops put it like this there you go that's a multi-line that's a single line comment just like Java you can see here your byte certain how the minimum size and the maximum size are going to lay out there's boolean is true or false you can see here they are lowercase character is going to have an unsigned maximum value of 65 535 and you can also see all of the other different data types and how extremely large they are it's also important to note that you can create doubles inside of here however they are only going to have 15 digits of precision so it's very important to remember that after that your floats are going to lose precision and of course that's true for all data types in all different programming languages however we will be able to create what are called big integers so let's say we come in here and we create a large prime number how we would do this is we would go equals to and then we would say a big int and then you can put your quotes then you could throw in a really really large number inside of there and then you're going to close that off and that is how we would be able to create a big integer and it's going to hold that size and it's going to make sure that it works so now of course we could come in here and do something like large prime plus 1 and it's automatically going to go in there and add that in you can know that that's going to be true we also have what are called big decimals and let's just go and create a big decimal let's say pi 250 digits and we're going to define this with a decimal like this paste in that big number close the quote at the end and there we go now we created a $2 decimal that's going to hold its precision then we'd be able to come in here and go and add one to that value and you can see that if you go and look at these values all the way down here this ends with 7 5 1 and this ends with 7 5 1 1 so it's pretty impressive we're able to use numbers that large other things kind of neat let's say we come in here and go Rand integer and then let's just throw 100,000 inside of it this is inside the terminal will then be able to come in here and go Rand int and then dot and if you click on tab it's automatically going to show you a whole bunch of different methods you're going to have available here and all these different data types that I've talked about they are all objects inside of Scylla so they all have built-in methods that are very useful your of course also going to be able to come in here and do all the common types of arithmetic that you'd like to do and five plus four right like this and you can see that that's going to add itself course we're going to be able to do the same thing five minus four and you can see we can also do subtraction we can do multiplication we can do division and here I try to do modulus but I mess that up let's just come in here and do this and there you can see we can also get modulus which is going to give you the remainder of a division so all the common different math types that you've probably well aware of also going to have shorthand notation however if we had random int Scylla does not allow you to do plus plus like that or minus - or whatever like that however what you can do is just add one to a value so you can go in there and do that and equally we would be able to come in here and go random int and subtract 1 and then reassign it back to the value for random integer so you could put that in there like that you could also do a multiplication like that and of course you don't have to use one and you could also do a division like that so put a four inside of there like this now if you want to import a library directly inside of the repo or the inside of the terminal all you would do is just go import Scala dot math and then dot and then an underscore and that's going to import all the different libraries that are available to you and then we'd be able to come in here and do things like get the absolute value get the cube root of a value also be able to come in here and get the ceiling so it's something like that we would be able to round a value see exactly how that rounds floor is going to get you the bottom or it's going to round down come in and get you number raised to whatever power just put one inside of there to get Euler's number we could do power or two soon every our square root and we could do something like power of two two plus power that you can see you can combine all kinds of different things inside of here be able to get the hypotenuse there you go that's exactly the same as the calculation I just performed log to the power 10 there we go you could get the natural logarithm to the base of e just like that of course we have minimum and maximum and of course sure you know that works out and also you can come in and calculate random values so let's say we wanted to do something all we need to do is go random like that and then you can put in 11 minus 1 what this is going to do is give you a random number between 1 and 10 and if you want to convert this into an integer just go to int right like that you can see right there give us a marianum value and come in and just do this all day and night there's a whole bunch of random values and then finally we could come in do something like the radians and finally we could come in and get their degrees so there's a whole bunch of different math functions that are available to you with Scala and of course I'm going to show you how to do this in a compiled way here in a minute now let's go over and take a look at conditionals now your conditional operators that are going to be available to you are going to be equal to not equal to greater than less than greater than or equal to less than or equal to and that's pretty much everything and then your logical operators are also going to be familiar if you're used to using Java and or and not let's go and create a couple examples here so let's create an age and have that be equal to 18 now if statements inside of scholar are going to be similar to Java except they're going to return a value kind of like we're used to with the ternary operator inside of Java so let's go and let's just give a demonstration this will say can vote and we could say if and then we'll say age is greater than or equal to 18 and we would say something like yes else no you can see how the results work out there you might as well give a demonstration of when we'll use curly brackets and when we won't so inside of the terminal that we're using here like this we're going to have to use curly brackets however and normally you do not need to use them inside of your code let's just go and age is less than or equal to 6 so here we're going to use curly brackets cause the terminal needs to know you know to allow you to continue typing in code and we could do something like print line this is how we print out to the screen there's a whole bunch of different ways to pronounce of the screen and Gordon like that close that off then we'll close off the first if statement then we'll go else if this is how we would check multiple different conditions and we can come in here and say age is greater than 6 and age is less than or equal to 7 it's doing a simple calculation to figure out exactly what grade a student would go to and then under this situation we could do print line print line of course is going to print out everything that you put in between quotes and then it's going to add a new line to your screen and then we'll close that off and it will say else and then in the last situation we'll go print line go to grade and then of course we're going to be able to use plus and then inside of here we can throw in any type of calculation we'd like to use and of course there's numerous ways to do that there's that and then after you hit that it's going to tell you what grade you need to go to which was 13 and the reason why is we had this stuff for 18 here at subtracted 5 from that that's how we get grade 13 and of course we could come in and do some boolean calculations so true or false basically it's going to come back true if either one of those is true and that's a rough overview of how we can use conditionals inside of Scala now I want to jump over and start writing some real code ok if you want to exit out of the Scala terminal you just type in colon and Q and that's going to exit you out of there and now let's start writing some regular old code what we're going to here is we're going to type in object and then this is called skala tutorial with the scala exemption at the end there and call this gala tutorial right like this put some curly brackets and then inside of main is where we're going to be writing our program code and there's arguments that can be accepted inside of this guy right here all going to be considered a string and we'll get more into arrays later on let's just write some code here so we'll go variable now I'm going to go over looping here just to start off I'm going to create a variable that's value can change see it says bear and if you wanted to create a while loop in here we'll just go I less than or equal to ten like I said you can use curly brackets if you'd like to I'm a hardcore Java guy so I like to use the brackets but of course you don't need them and then we can use the shortcut to increment the value of I know to compile this guy you can either go in here and go skala C like this and then type out Scala tutorial dot scanner like that or you could just go Scala Scala tutorials gala and get exactly the same thing right there and you can see that it went and it looped through values between 0 and 10 with our while loop there's also do-while loops of course and you're going to use do-while whenever you want to guarantee that you're going to go through the loop at least once and we'll just do a print line I you can see there I'm like putting the semicolons at the end even though I'd really like to because I'm not a Java guy and in this situation you're going to put the while condition at the end so you're going to say we're going to continue looping through this as long as I is less than or equal to 20 you can see we execute that it's going to cycle through and print out 0 through 20 we're also going to have for loops inside of Scala and here I'm going to show you a couple of them if you want to cycle between 1 and 10 we're going to go I put that little carrot symbol there and we'll go 1 to 10 and just to show you that we can do it without the brackets we can go print line I and you can see I printed that out perfectly fun and of course all this code here is available in the link underneath the video we could also go letters like this and I can throw all the different letters in the alphabet and here we're going to use a different type of or loop that we're going to use until here this is very commonly used whenever we want to loop through strings or arrays so we'll go 0 until and we could say random letters and if we want to get the total length for that so it's going to cycle through there as long as the letters are available for us to print out and then if we want to come in here and print out specific letters from this string we just go random letters and then inside of there instead of our square brackets we put those inside of parentheses that's a common error so just pointing that out and you can see there it went through all the different letters and printed those out on our screen so that's how we'd use until you can also use a for loop to iterate through a list so let's go and create ourselves a list and this is how easy it is to create a list just go list like that and there we go 1 through 5 for our list and then we can just go for I temporary holding cell for each item in our list a list and then of course we could go and print out those list items and a plus sign at the end to concatenate those together and it tried to print out that list but mess that up so let's go in here and do that and again put AA inside of there and now you can see it printed all the list items out so there's a bunch of different ways we can use for loops other things kind of neat is we can throw an if statement inside here so let's say we wanted to cycle through a list and only store the even numbers well we could go the article and say something like even list is equal to 4 and then inside of this we'll go I 1 to 20 so let's say we wanted to go through all the different list items from 1 to 20 we get then inside of this guy say if I and the modulus of 2 so anytime we would check for the modulus of 2 and it would be equal to 0 we know that we have an even number and then down here after we close off that curly brace we go yield I and the value of I after it cycles through this list is then going to be stored in the even list like that and then if we wanted to print out this new even list of course we could just go for I and even list and print line and I and there you can see it printed out all those different list items that's just a different way to filter through a list and there are many other different ways to use filters inside a scale and of course we'll take a look at those as well we're also going to be able to assign or increment through multiple different variables with our four loops so let's say we wanted to iterate through I and that's going to go from one to five like this here we'll put a semicolon because we need that because we have more than one statement then we're also going to iterate through using the variable J between the numbers of 6 and 10 and basically what this loop is going to do right here is it's going to cycle through the first value in I and then it's going to print out all the different values in J and then increment I and then proceed to work with J over and over again probably makes more sense if I just go in here and show you how it works so I'll just go print line I print the value of I there and then we'll do exactly the same thing what J just change this to J and there you can see exactly what it did so when I printed out the value of I which is the first increment and then it printed out 6 7 8 and 9 and then it incremented the value of I and printed out 6 7 8 and 9 and so forth and so on and whenever we take a look at multi-dimensional arrays later on you're going to see how useful that can be the thing it's important to know is that there are no breaks or continues inside of Scylla however you can kind of knock that off and now we're going to do that is we're actually going to create a function here and I'm going to call this print primes and that's how we create functions we've typed in d EF inside of this I'm going to create our Prime list create a list like this and then we can say something like 1 2 3 5 7 and 11 we could then cycle through all these different guys by going prime lists and then if you wanted to implement something that would work like a break statement we could say something like if I is equal to 11 in that situation we want to jump out of this function all together so you can just type in return and that's exactly what that's going to do so that's a way you can implement break inside of Scala if you're really missing it and then we could also basically knock off a continue statement we'll do I just throwing in an if statement here so we can say something like a 1 is not a prime well we could say if is not equal to one then we're going to print the value of I otherwise we're going to end this and jump back to the beginning of this loop and then you can see if we get completely out of here exactly how we would call for this function to execute we just go print primes like that that's how easy it is to execute a function and you can see there print it out all the prime numbers that's not only how we define functions but also how we cycle through lists and also how we can implement break and continue even though they're not pre built inside of Scala now let's go take a look at how we can handle input and output so let's create a variable and let's call this number guess and just give it a value of zero here you're going to see a situation what you do while is going to make a lot of sense because we definitely want to loop through it at least once and we're going to say print if you don't put print line at the end there it isn't going to issue a newline we could say guess a number if we want to get input from the console we could just go number guess and then we'll go read line if we want to read in the data as if it's a string which is probably a good idea then if we want to convert it into an integer we would just go to int and if you're wondering you could also come in here and go read int read double read byte read short read long okay so if you wanted to or you were absolutely positive you're going to be reading in those different data types you could do that otherwise you could just always read in strings and convert them to your chosen data type which is what I normally do and then at the end here after we cycle through this at least one time we can say wow number guess is not equal to 15 we're going to continue asking them for numbers and of course after this we could say print half another way of outputting to the screen you could say you guessed the secret number if we want to throw an integer inside of here just put a percent sign and AD and you're going to need a new line there because printf doesn't allow you to get a new line any other way and then we could vote 15 right there and this guy right here is going to juxtapose directly inside of there and I'm going to show you more about printf and a whole bunch of other different things and I got a little bit of an error here about deprecation let's go and fix that so let's jump up here and we're going to create an import let's import a couple is actually when I import libraries you just type in import and I'm going to get Scala dot IO dot standard in like this and if I want to specifically just get two different functions here I can go read line which is what that little warning is complaining about I could also do read in do whatever I had my math library I showed you how to import that inside of the terminal you do it pretty much the same way inside of the compiled version of Scala here then I'm also going to import a library for using ray buffers which we'll see later and print writer and source which is going to allow us to print to a file and then read from a file which we're going to see here in a moment and then we'll come in here and execute this and now you can see we didn't get the deprecation warning so that one away hey see if we type in all these different numbers it's going to continue asking us until we get the right number so that's exactly how we would import data or get data from the console a couple different ways we can print out information now let's go in here and cover a couple other different ways to output data let's create a couple different variables there's my name age weight and I'll show you how we can use some styling using print line could also come in here and type in s like that and we'd be able to go hello followed with whatever the variable is that you'd like to print out there on the screen and that's going to work well we're also going to be able to go print line and put an F in front of it like that and you'll be able to say something like I am and a dollar son and you can put age you perform calculations directly inside of here if you'd like and way and I could go wait and let's say that I wanted my weight or my double here in this situation only so two decimal places that's exactly how you do that then you put an F at the end of it like that and of course you're going to want to make sure to put an equal sign inside of there and you can see here hello Derek prints out and it also prints out I am 40 and weigh 175 point five so some other interesting ways which we can output information and basically the styling characters are going to use like right here we have F with the doubles and all those other different things you're going to use a % C for your characters % D for any different integer types that you want to use of course for any floating-point numbers and then s for any strings a couple other things we can do here we could go print F which we're going to use a lot and let's just talk about justification how that's going to work for us if we wanted to have this right justify let's say with a total of five spaces like that and I'll put another quote inside of here just so we can see the de justifications taking place could do it that way we could also do left justification by putting a minus sign inside of there and you can see how it's justified see it's right justified there with five spaces left justified there with five spaces could also come in do a couple other weird things like let's say we wanted to do zero fill you throw a zero right there inside of there and say threw in those four zeros to fill up that space you've seen this before but let's say we wanted to come in and do five decimal places and we do something like 3.14 and then since this is a floating point number throw it up inside of there you can see it went and threw in those decimal places you could also do left justification using strings so this isn't only tied to using numbers say five and then an S and then we'll just sort of something like hi inside of here say hi now that's justified of course you can write justify as well and the other difference this guy right here is a newline the other different special characters you're going to use a lot B for backspace like that there if you want to use a backslash and then maybe a if you want to do an alert sound or something like that but for the most part you're not going to use any other special characters and I'll get more into in putting an outputting data here in a minute but let's jump over and take a look at strings okay so we already created strings here in the past so no use and going over that just throw them between double quotes and there you go you got a string now if you'd want to print out let's say a specific index like the third index where your string of course we would just come in here and go random sentence that's what I'm saying there and throw in three inside of that and you get a out of that which is going to be this guy because it starts at zero one two three so that's the third index inside of there at zero of course we'd also be able to come in here and get the string length which is very useful if we're sorting through a string by just going random sentence and then typing in length like that and you can see it printed out 21 we'd also be able to come in here and concatenate strings or combine strings if you want to use a less fancy term and we can just go random sentence concat like that and explode or something like that random and there you say it combine those for us we're also going to be able to come in here and compare strings say something like our strings equal and then we can just go I saw a dragon and then go equals and then go random sentence and we execute that you can see that comes back it's false of course there should be our strings equal that we kept put either way we could also go through our string here and find a match so let's say we wanted to find where dragon shows up inside of the string we could say a dragon starts at index and of course we could go and put this down at the bottom here keep this a little bit neater and then to find it we go random sentence index of and then we'll put inside of here the string that we're looking for inside of that string and you can see that it pops back the index starts at eight another thing that's useful is we can take our string here and convert it to an array so we go Val random sentence array is equal to random sentence and then just go to array like that and then of course after we do that we could cycle through it we can cycle through the string I already showed you how to cycle through strings before random sentence and we'll get more into arrays here in a second and print line V and you can see it printed out all that along with all the different spaces on separate lines and that's most of what we're going to talk about strings here get more into them a little bit later now let's take a look at functions now your basic function is going to start off with de F like that and then whatever your function name is then you're going to have your parameters and they're going to have a colon followed by whatever that parameters data type is that's going to continue as long as you have more and more parameters this is then going to be followed by another : and the return type and then there's different ways of using equals to and curly brackets which I'm going to show you here through examples in a function body and then you're going to have your value whatever you want to return and you can either use return or not use return as you're going to see here in a couple of these different examples so let's create a whole bunch of functions let's create one called get some and it's going to have a parameter called number one and we're going to have this be an integer define it as an integer if you wanted to come in here and give it a fault value you of course give it a default value we could then go number two also an INT has a default value of one and the return type for this function is going to be integer then we could say equal to and a curly bracket and then we could either put return inside of here or not so this situation I'm going to put return inside of here I'm going to add those two guys up right like that now we're going to be able to come in here and say print line say something like five plus four is equal to and then call our function buddy going get some five plus four or five and four and you can see that printed that out on the screen we're also going to be able to come in here and get rid of this return all together and get exactly the same results so sometimes use return mainly use it just if you're used to other languages that use return but other than that Scala doesn't require it because it automatically outputs the value based off of the last line of code inside of your functions another thing we're going to be able to do is we could call this function but let's say we wanted this in this situation it's not going to matter but let's say that we wanted to use named arguments inside of here so that num2 gets five and then num1 is going to get four we can do it that way and of course you're going to get exactly the same results then we have functions that do not return values and these are referred to as procedures inside of Scala and they're defined in the same exact way we could say say hi see there's no parameters inside of there in a situation which you're not returning anything you're going to put unit inside of there and then you just throw a simple print line inside of there and then this function of course can be called just by going say hi don't need to do anything else you can see how to prints out there on the screen as well could also come in here and receive a variable number of arguments so we could do something like another version to get some here we'll go args and this is going to receive a bunch of integers so we're going to put a star there at the end of there so then going to return an integer after it performs its calculations sadha here we could create something called some integer give it an initial value of zero and then create a for loop num and then we could refer to our cycle through all the different arguments that were passed in sum plus equal to whatever the number is currently inside of there and then we can put some right there with no return value and it's going to automatically send that back to us whatever the value of sum is and if we wanted to print out these value we could come in here and go get some like that get rid of this extra one and you can see if we execute that that's going to print out 21 just make sure you don't have I had a little extra column there I got rid of that so that's how you can receive a variable number of arguments and perform those or work with those by cycling through them with a for loop let's take a look at recursion which is something that confuses some people here we're going to do the normal example that's used with factorials to explain how recursion works this is going to receive a number and let's make it a big int because these guys can get big just to show you exactly how we would receive and then return a big integer and a function and we'll go if num is less than or equal to 1 we're going to return 1 from that else num times and then factorial this is the recursion part where it's calling a function is calling itself and I'll give you an example of exactly how this is going to work when we go in here and actually run it first call the factorial pass in a for inside of it execute it and then we'll go through exactly how it works so you can see right there comes back with a final value of 24 well how exactly does that work well let's walk you by step by step what it's going to do in its first pass through this is num of course is going to have a value of 4 that's going to be multiplied times factorial of 3 whatever the value of that is second time through num is going to have a V you of three why because say we're calling factorial again so we get to this point then we're going to be multiplying that times whatever the factorial of 3 minus 1 is which is going to be equal to 2 and then the third time through factorial now is going to be 2 which comes from right there goes right there and then we're going to call factorial 1 what do we say here if num is ever less than or equal to 1 we're going to give it a value of 1 so factorial 1 what we have right here is also equal to 2 times 1 so what's the value of that well that's going to be equal to 2 so that's going to come up here and replace this so what does that give you that gives you 3 times 2 which is going to be equal to 6 this of course is equal to 2 so where is this 6 go what goes right here and that gives you the final calculation that gives you your final factorial which is 4 times 6 which is equal to 24 so that's exactly how we would work with recursion inside of Scala and exactly how it works in regards to calculating factorials now let's jump over and take a look at a raise now when it comes to should I use an array or an array buffer it's basically going to come down to one thing you're going to use arrays whenever the size of the array or the number of pieces of data are going to be fixed you're going to use on a rape offer whenever you're going to have a variable number of data stored inside of an array type structure if you want to create I'm going to cover both array buffers and arrays of course so let's go in let's create an array called favorite numbers we're just going to go new array like that we have to define exactly what the data type for our array is going to be and then we have to define this size for an array could also come in and define an array and also initialize it all in one line Bob and Tom are my friends in my friend array you can also be able to come in and change the value and right just by pointing at index 0 which is going to be Bob in this situation change that to su and we could come in here and print this of course by going best friends and then friends and let's just say 0 inside of there for the first index you see best friends su pops by and this is versus working with an array buffer array buffer let's just go and create a salsa call this let's call its friends to array buffer is also going to require us to come in and define what type of data type we want inside of it which is going to be a string and there we go but you can see I left the length part out because that's not going to matter when the rate buffer because an array buffer size can change see we could also come in here and go friends then and insert into the zero index I could throw fill I can also come in and add an item to the next available slot just by going friends to plus equal to and let's say we went to throw mark inside of there that's going to work for us we could also come in and add multiple different values just by going plus plus equal to and we could just structure this like an array and it's automatically going to fit right into our array buffer so let's say we got Suzy and Paul we could also add items starting at the second slot so we can go friends to dot insert and second slot in this situation is going to be one and we go Mike Mary and Sue you see we can add a whole bunch of values all at one time it also come in and remove an item so we could say remove two elements starting at the second index well the second index is going to be one and there's the two items we want to remove and then we could come in here and cycle through these guys so let's just say friend let's create a string equal to give an initial value of nothing and then if we want to cycle through them of course temporarily store them in the friend variable friends too so what we're going to be cycling through and then go print line friend and you can say it went print it out fill Sam Mary Sue mark Suzy and Paul that's how we can insert remove and do all kinds of other different things with ray buffers let's go and use the favorite numbers array up here just to show you how we can fill an array and other different ways let's try using a loop here because that's kind of easy let's go j and then we'll go 0-2 and then if we want to get the length of our array like that minus one that's going to give us all the different values inside of our array or that we're going to be cycling through we could then go favourite numbers and the J index is equal to the value of J which we're going to be storing inside of that array and then we could just print this out on a screen just to show you what that looks like favorite gnomes and throw J inside of there there you can see it printed out 0 through 20 or through 0 through 19 in that situation out on the screen another thing is kind of cool is now that we created this favorite numbers where we store data inside of here we'd actually be able to cycle through these and perform multiple different calculations on them using yield like we used yield before as a way to format data so you say favorite numbers times 2 is equal to we do this all in one line we could get a for num holding sale for favorite numbers array which is what we're going to be cycling through and then we could say yield and 2 times num which is the value there don't need to do anything else with that and that's all going to create another array force in which all those different value is going to be multiplied times 2 the thing it's cool is we can now take this guy favorite numbers times two and another way that we could print out those is just by going for each and then throw print line inside of there it's going to multiply all those different values times 2 as you can see it did right there on the screen another thing you could do which is neat is we'd also be able to store values that match conditions so we'll say favorite nums divided by 4 equal to say 4 this is more of the functional part of scala what you're seeing here so you say favorite numbers and then throw a condition inside of here if number modulus 4 so this is going to tell us if what this is multiple for or not is equal to 0 and here we can use yield again there's yield here we're not going to perform any calculations on it we'll just have that be number just like that and then let's use our favorite numbers divisible by 4 and we'll use our little for each trick here like we used before and you can see right there it's only printing out all those values that are evenly divisible by 4 so that's pretty cool we could also come in and of course and create multi-dimensional arrays and we'll vote malt let's create a multiplication table here and with multi-dimensional array you need to go array dot of dim and then you're going to define the datatype that's stored inside of it then you need to decide or define the size of the multi-dimensional reg to make this 10 by 10 we then go for I cycle through 0 through 9 for this guy use curly brackets in this situation because I feel that it makes it look a little bit better make a little bit more sense and it will cycle through 0 to 9 again for the second part of this guy and then inside of here we can go multi table value for I value for J and then let's make those equal to I times J and then to print them out you're basically going to do exactly the same thing so let's just copy this for loop except in this situation we're going to print those values out so let's use printf in this situation just to demonstrate using printf so we can say the first integer and the second one is equal to or the indexes whatever you want to think of the mass and we'll throw in a newline and we'll throw I and J and then if you want to get the value from the multi-dimensional right just throw the eye part in there and the J part in there as well and there you can see it printed all those different multiplication tables out there on our screen that's how we can use multi-dimensional arrays I think is kind of neat is we could also come in here there's a whole bunch of different functions that are available to us so let's say we wanted to sum all the values in an array of for us we can do that with some what you can say say favorite numbers and you can play around with this in a terminal and just type in that value followed by dot and it's going to show you all the different functions that are available to you and you're going to be able to do there's a whole bunch of functions I'll just cover a couple of them here we'd also be able to come in and get the minimum value inside of that array with men we'd also be able to get the maximum value inside of there with max there you can see the sum of all those values the minimum and the maximum do some other cool things here with arrays we could also sort them so we could say sorted nums is equal to favorite nums and we could sort them ascending or descending so you can say sort with and you'd put an underscore there greater than sign and another underscore there and this is going to give us a sorting of descending if you wanted ascending you'd put it this way descending this way and then another little trick is we can return an index sequence and convert it into a string with commas so I'll show you how that works what's just use print line here and we go sorted numbers deep make string like that and then if we want to separate it with commas we just put it in there like that and if we execute it you can say it did say it automatically because of this guy right here put it in descending order and then with this guy right here convert it into a string we could print out and also through comments inside of there there's a whole bunch of really cool things we can do with arrays and array buffers and all the other different things we covered here now let's take a look at maps now a map is a collection type just like arrays and arrays buffers except they're going to store what are called key valued pairs and to create a map let's go and create one for employees spell employees right there we go and to create a map we just go map and then this is going to be the key so this manager followed by a dash like a little arrow and we could say Bob Smith is the manager we can put as many of these in here as we would like this map in this situation is going to be immutable which just means the values can't be changed after they're created I'll show you how to create mutable ones as well and secretary and then let's have sue Browne be the secretary we could then get the value from this employees map and we say contains we can check to make sure that employees black you've spelled employees wrong there we go don't really like being an employee can't spell it right all right so let's check that the map actually contains a manager key first before we ask for it and that's how we would do that and then in the situation which we find that let's use printf this time we could say manager there we go and then if we want to get manager or the value for the key manager inside of our map we just go like this and you can see Bob Smith pops right back there like I said we can also create mutable or changeable Maps so let's create another one called customers how we would do that is we would go collection dot mutable and then map and then we come in and let's just say the key in this situation is going to be 100 and have that be Paul Smith and then the next one let's have that be 101 these all have to be different their keys that's important and Sally Smith and there we go we just created a customer map it's mutable changeable whatever we could then go prune out and we say we want it customer one and to get it of course we're just going to throw in the first key inside of there and you can see Paul Smith pops back as the first customer in our list we could also change the value using our keys so let's say we just reference customers which is the map 100 and let's say we want this to be Tom Marx and said now it's dawn marks could also add an item because this is a mutable map so customers can't do this if it's immutable and we could have this be Meghan Swift and then if we wanted to output both the keys as well as the values we could use a for loop for that say I've told you I was going to cover a lot more with for loops like this and the map we want to work with which is customers and then we could say print out and we could get the key so we're going to use D there of course because it's an integer and and that's a string right there throw in a new line and now we can just get the key throw it where it needs to go and be value and throw it where it needs to go and if we do that you can see it prints out the keys and the values for everything in the map and that's the vast majority of what we need to know about maps and now let's go and take a look at tuples now tuples are going to hold values of numerous different types but they're normally immutable so let's go and create a tuple so we'll just call this tuple Marg is equal to and let's have the speed let's say it's an ID of 103 Marge Simpson and let's say that she owes us a balance of ten dollars and 25 cents we would then be able to come in here and print information out here so it's a string owes us and we could say how much is this let's say we only want well let's throw a dollar sign inside of there first you know two decimal places and there we are and now if we wanted to get the values inside of there we would go to pull Marge this is a little bit weird underscore two so we want Marge Simpson so this guy right here the second this would be the first this will be the second this will be the balance and then we would also go to pull Marge like that to get the actual balance that's owed and you can see Marge Simpson's owes us ten dollars and twenty five cents pops back if we wanted to iterate through a tuple we could use a product iterator so let's go to pull Marge product iterator and then call for each and then go and get all those different values and print them out on the screen and there you can say print it all those out on the screen all in separate lines and if you'd want to convert a to Bowl to a string all you would do let's just go into it inside of a print line we could say tuple Marge and call to string on it two strings available for a lot of different things inside of Scylla and you can see it printed out all that information for that tuple that's a rough overview of how we're going to use tuples now let's take a look at classes okay like any other object oriented programming language classes are going to be used as blueprints to create real world chuck's and those objects are going to define attributes which are called fields and object oriented world and capabilities of those objects which are called methods and we're going to define them outside of main I often like to figure out or print out little comments here or exactly where the different parts of my language or my program begins and ends just helps me guide my way through here and now we're going to create a class let's create a class called an animal and you're actually here going to define the default constructor and the different fields you're going to use right here right after we define class and whatever the class name is so this class is going to have a string it's also going to have a sound you can see I'm using var here because I plan on these changing or basically I'm deciding that they may change and there we go so first thing I want to do here is also before anything else happens this is also part of the default constructor which is going to be the function in the code that's in execute first whenever a new object of type animal is going to be created it's a little bit weird so what I want to do here is I want to call this this animal I'm going to call a function I'm going to create here in a second called set name because I'm going to have some of this data be protected so that we will be able to verify or only allow certain names to be assigned to certain animals so this in essence right here is a constructor where we are going to be accepting a name we're going to be accepting a sound and we're specifically going to allow them to set the name how we define them to allow it to occur another thing is a little bit odd with Scala is that there are not static variables and static methods like in Java for example and we're actually going to create one of those here in a second and how I'm going to do that is I'm going to give every animal an ID and it is going to call a type of static function that I'm going to call new ID number which will create that in a second just give me a moment to structure everything out here I could however if I didn't define the name and sound and things like that up here I could come in and do something like protected variable name is equal to no name but I'm not doing that in this situation I'm going to have everything done up here in the primary constructor area and there's also protected and private and public inside of Scala just like there is inside of Java protected just means that the field can only be accessed directly by methods defined inside of the class or by subclasses classes that are going to inherit from this animal class right here will see inheritance here in a second as well this is marked private fields can't be accessed by subclasses or classes that inherit from animals and if it's public gets basically going to be data that can be accessed from anything but like I said I'm not going to use that here because I'm defining all those different types up here inside of my primary constructor which is what Scala calls it I'm now going to come in here and define getters and setters that are going to be used to protect our data now the get name part isn't really going to protect anything it's just going to return values and you can see that it's going to work just like any other function that we've come across here so far it's just going to go and get the name that store inside of here and output it you can also see we're going to do exactly the same thing for get sounds except in this situation of course it's going to return whatever the value for sound is now let's come in here and create the set name part for us so that we'll be able to see exactly what's going on there with that guy so a set name whenever it's called is going to receive a name which is going to be a string datatype and let's say that I do not want them to be able to have numbers inside of the name that they pass for the animal okay I'm just throwing this out here just as an example of how we would like to protect our data and we could say if not and then we could say name and this is where we have regular expressions right here I'm not going to get too much into regular expressions I have other tutorials on regular expressions but basically what I'm saying here is I'm looking for a match in which I have any decimals any numbers inside of this string and I'm saying if the name that they passed in here does not contain any dust most any numbers well then I want to work with it and under that situation if I want to refer to this animal objects specific name and assign a value to it I'm going to type into this name is equal to name however in situations in which they did pass in a name that contain numbers in that situation I'm going to say this dot name and I'm going to protect that data that's why I'm using getters and setters and I'm going to give it a default name of no name to show that it was not set we can also come in here and do the same thing with that sound except in this situation I'm just going to let this be perfectly fine allowing them to directly go in there and change the sound for my animal and once again if I want to change the specific sound I just hear this sound and pass it in sound so you may say to yourself well what happens if they try to create an animal object but you do not have a name or a string or whatever remember this is the default constructor that's going to be called to create new animal objects well we can also have a whole bunch of other constructors so let's create one how you create other constructors as you call define this this is a constructor inside of Scalla and in situations in which they only pass in a name in that situation I'm going to call the primary constructor and I'm going to say no name is going to be the name I assigned for my name and no sound is going to be assigned for the sound see they didn't pass in a sound so I am NOT going to have one to pass up here to this guy to assign so I'm just going to let be the default right there however they did pass a name so I'm going to go this set name like that and then call this guy up here to verify if it's a valid set name or a valid name and if it isn't give it the value of no name so that's how we would handle if they passed in a name let's also cover if they do not pass in a name or a sound well we're going to go define this once again not going to put any parameters inside of there because we don't have any and in this situation we'll just go this and then we'll go no name and we'll set those values for us no okay so those are the constructors and they work very much like they work in other object-oriented languages you can also override methods so one method that is available in Scala with every object you create is called two string if I want to override any method whether it's pre built-in or I want to override a method whenever I inherit from it I just type in override to string and then I can define exactly what I wanted to do this one's going to return a string and then if I want to format a string I could do something like return and throw in a string there with the ID I'm going to show you here in a moment how to get that ID part there D says s like that and then I could call dot format like this and then go this name dot this dot ID and this thought sounds and that is how we can format a string that we're going to be returning from a function or method as well that's how to override and that's out a formatted string and that's how to do a bunch of different things I'm going to run this in a second so you can see everything exactly how it works first thing I wanted to do however was to get back to this ID part remember up here I said I called a function and we're going to have to do new different ways of creating static methods or static functions inside a scallop versus what we would have inside of other languages like Java what I'm going to do and make sure I'm outside of this class area and we'll come down here right afterwards and I'm going to create a companion object for my class which is where we would be able to find static class variables and functions and how it's created is you go object and give it exactly the same name as your class so it's going to be animal in this situation and you want to create a static I mean that's what it's called in Java field you would go ID number is equal to zero like this and private and we could create a static function new ID number is equal to and inside of here we can perform some operation like we can take this number and just increment it so that we will know that each animal object is going to have a unique ID and then after does that calculation it's going to return the ID number so that's how we would create static fields and Static functions inside of Scala as well and that of course is what this is referring to see new ID number and if we come down here a new ID number this is a function so now let's go and create some objects using this class come back up inside of main I'm going to create one I'm going to call it R over and I could just go new animal like that I could then come in and go R over dot set name and pass in Rover like that just make sure I don't put a number inside of there otherwise it's not going to like it set sound and I could just say wolf like this and then I could print out some information on the screen and how I'm going to be able to get this data just by calling Rover get named Rover get sound come down inside of here see a get name get sound those functions right there exactly what I'm calling and you can see right there Rover says wolf sound pretty simple and you can also say that this is going to work whether I pass in a name and sound or I do not because I set up all those different constructors we had there likewise I could also come in and create a cat type of vibe note item here new animal and in this situation I am going to pass in the name and so forth whenever I first created a meow and why don't I show you another different way that we can work with objects using print lines so we could do like this I could also come in if I put that little s inside of there put dollar sign like that let's close that off so it stops flipping out and I would then go whiskers like this get name and that's going to work with ID and I could go and get my ID that was a sign to whiskers ID says and then I could also put another dollar sign as out of there and go whiskers sound like that and of course close that off the curly braces and why don't I also come in at the same time and go whiskers and let's also call that two string function well let's also throw this inside of a print line because to string returns a string doesn't print a string and you could say whiskers with ID to says meow whiskers with the ID to says me out they both do exactly the same thing just show you a different way about putting that information inside of print line now let's talk about inheritance and how that's going to work so I'm going to scroll down here pass my animal class and this animal object we have right here and basically a class that inherits from another is going to of course gain all of the class that it's inherited from all the fields and methods to find an animal in this situation and the only way that can't happen is if this guy up here is declared with final so if you do not want a class to be inherited from declare it as final and you won't be able to do that so let's come in here and let's create a new class called dog it's also going to receive a string a sound however because it is a dog it's also going to have a growl now if you want to inherit from the animal class we're just going to go extends and then you're going to define name and sound which is going to be passed over to that class and then put curly brackets guys remember animal receives a name and a sound whenever all the animal objects are created we can stretch this out here so you can see all that on screen at one time then inside of this guy we're not going to create all the constructors we're going to need so the fault constructor here is going to be this going to receive name it's also going to receive remember this is the default constructor up here it's expecting a name a sound and a growl if it doesn't get a growl in this situation we need to handle that so in those situations we're going to say this and go no name we can pass in sound because we got that and we're going to pass in no growl because we didn't receive a growl and then just like before we're going to do some checking on the name to make sure the name is a valid name by calling set name on that and this is going to be able to call the set name whoops make sure it's the same set name there set name here upper case make sure those are exactly the same otherwise this will not work so that's a constructor we'll use if we only get two of the value passed over and then we'll go and define what's going to happen if only a name is passed over and here we'll go this and we'll say no name no sound and no growl because in this situation we only received a name and then we're going to verify again that the name is okay bypassing name inside of there and then the final situation constructor wise as we'll go define this and we'll have to handle if they don't pass anything inside of it and under that situation we'll just go name a sound no growl we can also of course override any methods that are defined in our superclass in exactly the same way override define to string it's going to return a string just like the last guy did and let's just copy this because it's very similar paste that in there and we'll just say says s or throw in our growl right there and then at the very end of this just change this to growl like that and now that we have that safe we can jump back up inside of main once again and we'll work with our dogs that we created so let's create a dog called spike is equal to new dog and then we'll just go and define everything inside of here just keep this simple so his name is his spike he says wolf and he says her there's that new object we could come in and go spike dot set name call that directly right afterwards make sure that's uppercase and we'll just leave his name spike as well we could throw in spike one just to see what happens on your end print line and then go to spike to string and there you can see it says spike with the id3 as you can see it automatically kept this object here and automatically kept generating ID numbers says wolf order so that's how we can work with inherited values now let's take a look at abstract classes now an abstract class can't be instantiated and it's made up instantiated means create an object from it okay and it's going to be made up of both abstract as well as non abstract methods and how you create one now I'm going to show you what those look like abstract class that's how you do it and let's stick on it with what we did before let's say mammal and let's say it's going to get a name string just like before and this is what we call an abstract field movespeed it's just going to be a field that does not have a value assigned to it so movespeed an abstract method likewise is only going to define the parameters it gets which just doesn't get any and it's going to have return type so there's no method body to it what you can do however with this is create another class and let's call this wolf and it is going to have a name and a string and then we can say extends mammal which gets a name and then inside of this we can define our movespeed so movespeed defaults going to be 30 5.0 and then we could do something like define a function called move and it's just going to print out the name of the animal as well as the move speed for that animal you can see exactly how that's all structured now what we're going to be able to do is go back up inside of main we can get rid of all this stuff and let's create a wolf type that is called Fang and go new wolf and we'll pass in the name then we can say call the move speed for us and set that the 36.0 and then if we want to print out the move information on Fang we can do that very easily and you can see that wolf Fang runs 36 miles per hour and that's basically all you got with a abstract classes now let's take a look at traits now a trait is more like a Java interface in that a class can extend more than one then for example we couldn't have we couldn't extend multiple classes and we couldn't extend multiple abstract classes so we are going to be able to extend multiple traits the only difference is is unlike Java interfaces traits can provide concrete methods and fields and how we're going to create one is we'll say something like trait flyable and we can define fly this is a method we could then come in and also create another trait let's say we're going to do something with the superheroes will say that our superheroes can fly and maybe they're bulletproof will define hit by bullet what's going to happen if our superhero gets hit by a bullet and then like I said we're also going to be able to define concrete classes which is different than we can do with Java so we could do something like calculate the speed of a bullet after it hits our hero and it's going to receive a double and return a string so how is the bullet going to ricochet or what's going to happen when the bullet ricochets and here we'll basically just say that the bullet is going to ricochet off of the character and we're going to decrease the speed of the bullet by 75% just to keep it nice and simple now we're going to be able to use these traits to create another class let's call this superhero and it's going to have a name which is a string let's just have it be that and let's have it extend multiple traits so it's going to have flyable and if you want to have any further after that you have to put width down and then you would follow this up with all of the other possible traits that you'd like it to have we'd then be able to come in and define what happens or define the fly method so you could say flies through the air and then format and then this name and then we could also define the hit by bullet function and we could just say the bullet bounces off of an input our character's name their format this name and then up inside of main again we can create a superhero so we'll go Val and we'll just create Superman in this situation new superhero and we'll pass in Superman because that's his name and then we could do some print lines Superman fly what's going to happen in that situation and we'll do all these other ones too and we'll say hit by bullets Superman hit by bullet and then we can also call the other function which is going to handle ricochets and we can pass in twenty five hundred as the speed of the bullet and whenever we execute that you can see Superman flies through the air the bullet bounces off of Superman and bullet ricochets at a speed of 1875 feet per second so there's an example of traits and how they can be used now let's take a look at higher-order functions now functions can be passed just like any other variable and let's just give you an example so let's say I want to do the log 10 function is equal to well if I want to copy this function and what it does I just put log 10 that's the function I want to copy and store and log 10 function however you're going to need to put this underscore here after the function to state that you meant the function and not another variable or whatever which would cause an error and then we can just come in here and go print line log 10 function like this and then throw a thousand in there and you're going to see that whenever we execute that that that is going to print on our answer there so nice to know that we can store those functions now let's do something a little bit more interesting you're also going to be able to apply a function to all items it was a list for example so let's say 1000 just to keep this simple 10,000 maybe and how you're going to be able to do that is with a nifty function called map so we can go log 10 function like this and then call for each which is going to print everything out on the screen for us and you can see that's exactly what it does prints out the 3 and the 4 which is the log of this function so that's something interesting we can do with math another interesting function is well let's show you another example of map because I haven't done much with it say we want to go 2 3 4 and 5 could also go map and we can't accept the value of x which is going to be an integer and then have it perform certain calculations on everything in that list by just going x times let's say 1 multiply everything times 50 for example we could then go for each and print line and you can see it went and performed those calculations on each of the list items we have there let's take a look at filter filter is going to allow us to pass only values that meet a certain condition so we'll just create that guy and go filter and let's say that we want to only get even numbers so we can just put an underscore there for every item in that list and divisible by two and see if that equals zero and then for each again and print line and you're going to see that it only prints out the even numbers from those lists that's some cool stuff we can do with maps as well as filter now let's cover how we can pass different functions to different functions or different functions into a function so let's go times three and what this guy is going to do is it's going to receive an integer named num and it's going to return whatever that is times three and then let's get another one and let's have this one just B times four instead and it's going to return four times whatever okay so just define two functions we're going to pass into a function now we can define another function and it's point is that it's going to receive a function and how we define that we're going to be receiving a function and you don't have to type in func that's just the name I'm giving to the function passed in well make sure you put parentheses around this and then your put integer just going to receive an integer and it's going to return a double that's what that function is going to do and this function being malt it's or multiply it is also going to receive a number so it's going to receive a function right here that's going to receive an integer and return a double and it's also going to receive another integer well now what we can do is take any function that's passed inside of it and perform different calculations based off of whatever was passed into it and then on top of that we could come in let's say we 103 times 100 is equal to and let's have this view one decimal place and throw a newline inside of there outside of this we could go malt it and then we can pass in the times three function that we want to perform for us and you can see if we execute this we're going to get three times that and if we change this to four you're going to see that just that easily we're going to be able to just pass in any function we want and perform different calculations in that situation a closure is going to be a function that depends on a variable declared outside of that function and it's very simple let's just go Val and divisor value is equal to five and then we could go Val divisor five is equal to and here we go numb so you're going to be receiving a double and then it's going to take Nome and divide it by the divisor value that was created outside of it all on one line pretty useful and we can say print line and then do five divided by five I don't know not terribly interesting there but whatever and then we could say divisor value and pass in 5.0 oops got a little bit of an error there this needs to be changed to a divisor five of course typed in divisor value and there you can see how that works out okay so there's an example of a closure pretty simple just basically this is going to pend on a value that is stored outside of it and there's an example of how we can use that why don't we also talk about file IO now if we want to write to a file first off we're going to need to get this guy right here and this guy right here if we want to be able to read and write from files and to write to a file let's just create writer is equal to print writer and then you're going to provide whatever you want the name of the file to be I'm just going to call this test text and then I can call writer and write and it'll write out whatever I want at the right to it so I could say something like just some random text and throw in a newline inside of there and then say some more random text just anything close at all and then after we write to it we of course when we're done with it we want to say close and that will close that connection with our file if we want to read from it we say Val and text from file is equal to and this is where we use source and specifically from file and you're going to pass inside here file you want to read from and then you're going to pass in utf-8 and then you're going to go in and iterate over all the different lines of text that are inside of that file so file and we can say line Reiter is equal to text from file that guy right there get lines is going to get me all those lines I want to iterate through and I can say for line like this line iterator and then quite simply just say print line line like that and then after we get all that done we want to text from file like this and then close that connection to that file and if we do that you can see that if we execute whoops little bug slipped in there I have to make sure we put new inside of there execute and there you can see it printed out all that so that's how we write as well as read from files now let's take a look at exception handling all right so let's just keep this really simple let's say we wanted to handle a division by zero error how exactly would we do that so we'll say divide nums and this is going to receive a number which is going to be an integer and num2 which is also going to be an integer well if we wanted to potentially catch an error we're going to say try and then inside of it we could say num 1 divided by num2 we know that potentially num 2 could be a zero and that could cause all kinds of problems so we're going to say catch and then inside of it we can say case e^x and we we're going to say Java dot language dot arithmetic and you can look up all these different exceptions that are available to you exception and then we need to define what we want to print out we can say something like can't divide by 0 and then after we have all of that done we could do a finally block and inside of here we can do some cleanup after exception whatever you wanted to do inside of there and this is going to protect us if we would come in here and say print line and exception is just going to keep our whole entire program from completely collapsing if an error should occur in this situation we'll just go divide nomes and then we'll pass in 3 and 0 and if we execute you're going to see there is our error message we print it out so there you go guys there is a heck of a lot of information about Scala hopefully I answered a lot of your questions and this will move you very very quickly onwards to learning the rest of the language and as always please leave your questions and comments below otherwise till next time
Info
Channel: Derek Banas
Views: 538,385
Rating: 4.8600287 out of 5
Keywords: Scala Tutorial, Scala, Learn Scala, Scala Programming, Computer Science (Field Of Study)
Id: DzFt0YkZo8M
Channel Id: undefined
Length: 74min 40sec (4480 seconds)
Published: Mon Aug 24 2015
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.