In this video, you will explore further functions in Swift, such as function parameter names and embedded functions. So far all the functions you've identified have parameter names for each parameter, which is the same value as the variable name, so when you call the function, it can be unclear what each parameter is used for. Let's start with an example, I open up a new X-code playground. I have a function example, "hiThere", that takes the firstName and lastName or surname as parameters. Inside the function, I use the variables fn and sn to store these values, but when I call these functions, it may not be clear to someone unfamiliar with functions and Swift and it is hard to interpret that. However, I can remove the external names by adding an underscore before the variable names in the definition of the function. So I add underscore before fn:String and I do the same before sn:String. Notice that now at the bottom, when I call the function "hiThere", the variable names can be removed and it now looks similar to other languages. So after I removed the function names, I run the code and I get the expected result. Hi there, Fred George. When it comes to functions, Swift is much richer than other languages. A particularly rich feature is that it can have external and internal parameter names. Here I have the function hiThere, and where there is the underscore, I replace it with firstname and surname for lastname. I defined the variable as sn to be used internally and the type String, and then I've got surname and then sn and String also to be used internally. I will also implement the changes for the call of this function, so it will be firstname Fred, followed by last name or surname George. So here I am using fn and sn as I did earlier. However, now, when I call this externally, I have firstname Fred, surname, George. I now rerun this code to be sure and the output remains the same. This makes the interface much simpler and it helps people use the functions because it explains what they need to provide. I can use different names inside the function that make more sense within that context, I can also have default parameter values. Let me bring up a different example now. In this case, I have a function named Display and I have underscore s_1, underscore s_2 as String underscore, now score is defined as an int. If I don't define it, it will give me an initial value of zero, so I can actually say if I don't get value passed for that, insert a value. Now inside the function is concatenating or joining s_1, s_2 underscore and assigning this to a name underscore variable, then it prints out hello and the name score variable. Now if I call this function and put John and Roberts as arguments for first and surname when I call it, it will print John Roberts zero because it takes that score value that I am providing. However, if I call it now with the arguments John Roberts and score 100, it will now set that value to 100, so it will override that zero. Let's now explore function types. Function types are the signature of the actual function from the parameters that are coming in and the parameters that are being returned. I have a function that adds two ints, like in a plus b, and it returns an int which is indicated by an arrow towards the end of the function definition line of code. So this is basically a function type. In this case, this type of function takes two ints and returns an int. I may have another function that is a similar type, and I can use that to my advantage. Now let me create another function to illustrate that concept again. Var mathFunction: and then int, int within parenthesis, and then an arrow and int to say that it will return another int, then equal to my function, add two ints, so I have a function add two ints and I point an arrow to int. But I can actually store this function into a variable, that's why I have a variable math function, and as I said, its type is int and it returns an int. I can take the function name and store the function into mathFunctions. But the point here is just to show you that the actual function of what it takes and what it returns is a function type. Now I can call the assigned function by adding a print function such as print result, and then I add backslash parenthesis, mathFunction. Inside mathFunction, I pass 5,7. I now run this code and the result is 12, so I can call the mathFunction and it picks up all the characteristics of the add two ends that were stored in it. So that's another thing that you can do with Swift, and this is just a basic view of some extra features of functions in Swift.