Question: I have the following method inside a `User` Class:

```
func Login(username: String, password: String) -> String
{
    return "Login Success";
}

```

Why on Earth it only works calling it if I specify the second parameter "label"(not sure what it is called)?

```
var loginReturn = user.Login("aa", password: "zz");

```

iIf I do the following I got error:

```
var loginReturn = user.Login("aa", "zz");

```

I'm not happy with Swift.

Answer: 
From [Functions in Swift](https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Functions.html)

> 
> Function parameters have both an external parameter name and a local parameter name. An external parameter name is used to label arguments passed to a function call. A local parameter name is used in the implementation of the function.
>  (...)
>  By default, the first parameter omits its external name, and the second and subsequent parameters use their local name as their external name.
>  (...)
> 
> 
> **Omitting External Parameter Names**
> 
> 
> If you do not want to use an external name for the second or subsequent parameters of a function, write an underscore (\_) instead of an explicit external name for that parameter.
> 
> 
> 

I recommend you to read the whole chapter, it should clear up your confusion.

Also note that the external parameter names are technically a part of the function/method name.
If you call a function that has two parameters, you must list the name of the parameters after the first one if they have a name. With the current way you've written your function...

**This Code Works**

```
var loginReturn = login("aa", password: "zz")

```

**And This Code Fails**

```
var loginReturn = login("aa", "zz")

```