# Introduction to Closures In Swift

###### Posted By : Aditya Kumar Sharma | 21-Dec-2017

What are Closures?

Closures are enclosed in curly braces {} without func keyword and func name. They are defined by function type ()-> ()

```{ (params) -> returnType in
statements
}
```

in keyword separates closure header with its body.

Function VS Closures

 Function Closures has no in keyword has in keyword has a name has no name has func keyword has no func keyword

Define and Call

That’s how we define function and closures:

```func callAFunc() { }

var callAClosure = { () -> () in }
```

Closure is been stored in a variable so that it can be called when required.

Calling functions and closures:

```callAFunc()

callAClosure()
```

Both are identical.

Function to Closure

Let’s convert the below function to closure.

```func multiplyNumbers(a: CGFloat, b: CGFloat) -> String {
return “Result is: \(a * b)”
}
```

Steps:

• Removing curly braces
```func multiplyNumbers(a: CGFloat, b: CGFloat)  -> String
return “Result is: \(a * b)”

```
• Add in keyword between argument and body

```func multiplyNumbers(a: CGFloat, b: CGFloat)  -> String in
return “Result is: \(a * b)”
```
• Removing func name and keyword

```(a: CGFloat, b: CGFloat)  -> String in
return “Result is: \(a * b)”

```
• Put all in curly braces

```{ (a: CGFloat, b: CGFloat)  -> String in
return “Result is: \(a * b)”
}
```

It’s done. Now we can assign this closure to a variable and call it whenever required.

```var multiply = { (a: CGFloat, b: CGFloat)  -> String in
return “Result is: \(a * b)”
}

multiply(126.43,256.566)

```

Thanks