 Good, let's look at type parameters or the parametric method Now it's certainly possible to limit a function to accepting only certain argument types So look what I've done here. I've created a function called it m It takes one argument called x, but I'm using these double colon signs and then int What I'm saying is this argument must be an integer. It's going to return 3 times x and then end So let's do that. Let's call it m3 and it returns 9 Now let's make things a little bit more interesting. I'm going to have this if else Statement, so if x is more than or equal to 0 to return 3 times x if it is not More to equal to which really means it's less than 0 negative number is going to return 3 times x But still it must be it must be an integer and I've called my function in so let's do that It's a generic function with one method. So I'm going to pass negative 3 to it and learn behold. It's going to return and mine Now let's just look at this method Now for the first time we'll talk about what this says there was one method I can use the inbuilt methods function and look at the methods or the single method That this function n of mine has and it says look it's got one It's one method for generic function in and that takes in this argument x and it's a 64-bit integer so It means if I pass m3,3 or should have said n3,3 or no So that is not an integer. That is not an integer integer. That is not going to work Now let's have a look at this. This is a slightly different way of doing it I'm going to use these parentheses and then the argument So I have this function arc underscore test Now t is what is normally used. It says less than colon real So it means in our type hierarchy It can be a real number or any of the sub types of real That is going to be our type and I said x must be of that type So this is just a long way of saying well x must be real or any of the sub types of real and I can return x the value of x by this dollar is of type and then return the value that is in in t So if I do that We're going to see The following if I just pass 3 it says 3 is of type integer 64 And if I say 3.3, it's going to say well It's a 64 but float because float both float and integer are sub types of the real type If I pass the Welles number it says it's a 64 but float if I pass this pi which is an inbuilt value It says it's the irrational number pi and seven And I use this two backslashes. It says that's an rational number. It's an integer divided by an integer And just to remember there is this inbuilt Julia function called type of so I can just say type of 7 over Over 3 and that says it's a 64 but integer Both of them numerator and denominator as part of a rational or Julia's just an esky string Now let's play around a little bit more. I can Do the following I can say look I'm going to have this argument this type Of my argument called t and there's two arguments a and b and they must both be t So I haven't specified what t must be but what I've done here is as long as they are the same I'm going to use the inbuilt function called plus it's going to add a and b. So let's run that And what I've done there is I've added two imaginary or two imaginary complex numbers here two plus three plus the imaginary number i Three times i and one plus zero i so this is just one but I am using the imaginary number there So I am these two are of the same type and that will work So if I just use two plus three I am and one that would return this error to say they they don't match the the type of the two arguments Do not match So we're getting to start to understand what this method is all about and that is where the real power Of Julia is as far as functions go and we're working up towards that But first of all we're going to look at stabby functions and do blocks