Module 4: Swift Functions and Closures Tutorial | Learn Functions, Parameters & Closures

Module 4: Swift Functions and Closures Tutorial | Learn Functions, Parameters & Closures

AI Reading

Quick summary of this article

Swift functions are reusable blocks of code that help organize programs into logical sections, making them easier to read and maintain. Functions can accept parameters, return values, and even be nested inside other functions. Closures are similar to functions but are anonymous blocks that can be stored and passed around, often used as callbacks or completion handlers.

  • Functions are defined with the func keyword and can take parameters, return values, or both; for example, func square(number: Int) -> Int returns the squared value of its input.
  • Parameters can have default values (like name: String = "Guest") so callers can omit them, and variadic parameters (like Int...) accept zero or more values of the same type.
  • Nested functions are allowed in Swift, meaning you can define a function inside another function and call it from within the outer function's scope.
  • Closures use a compact syntax with { (parameters) -> ReturnType in code } and can be stored in variables, passed as function arguments, or used as completion handlers.
  • Shorthand closure syntax uses $0, $1, etc., for parameters, making expressions like { $0 + $1 } a quick way to write simple operations.

Module 4: Functions and Closures in Swift

Functions are reusable blocks of code that perform specific tasks. In Swift, functions help organize your code into logical sections, making it easier to read, debug, and maintain.

Defining a Function

Here’s the basic syntax to define a function in Swift:

func greet() {
    print("Hello, Swift learner!")
}

This function named greet takes no parameters and simply prints a message.

Calling a Function

To execute a function, call it by its name followed by parentheses:

greet()
// Output: Hello, Swift learner!

Functions with Parameters and Return Values

Functions can accept inputs (parameters) and return a value.

Example: Function with Parameter

func greet(name: String) {
    print("Hello, \(name)!")
}

greet(name: "John")
// Output: Hello, John!

Example: Function with Return Value

func square(number: Int) -> Int {
    return number * number
}

let result = square(number: 5)
print(result)  // Output: 25

Functions with Multiple Parameters

func add(a: Int, b: Int) -> Int {
    return a + b
}

print(add(a: 3, b: 7))  // Output: 10

Default Parameter Values

You can provide default values for parameters so callers can omit them.

func greet(name: String = "Guest") {
    print("Welcome, \(name)!")
}

greet()          // Output: Welcome, Guest!
greet(name: "Amy") // Output: Welcome, Amy!

Variadic Parameters

Functions can accept zero or more values of the same type.

func sum(numbers: Int...) -> Int {
    var total = 0
    for number in numbers {
        total += number
    }
    return total
}

print(sum(numbers: 1, 2, 3, 4))  // Output: 10

Nested Functions

Swift allows defining functions inside other functions.

func outerFunction() {
    func innerFunction() {
        print("Inner function called")
    }
    innerFunction()
}

outerFunction()
// Output: Inner function called

What Are Closures?

Closures are self-contained blocks of functionality that can be passed around and used in your code. They are similar to anonymous functions or lambdas in other languages.

Basic Closure Syntax

let sayHello = {
    print("Hello from closure!")
}

sayHello()
// Output: Hello from closure!

Closures with Parameters and Return Values

let multiply = { (a: Int, b: Int) -> Int in
    return a * b
}

print(multiply(4, 5))  // Output: 20

Using Closures as Function Parameters

Closures are often used as callbacks or completion handlers.

func performOperation(_ operation: (Int, Int) -> Int, a: Int, b: Int) {
    let result = operation(a, b)
    print("Result: \(result)")
}

performOperation({ $0 + $1 }, a: 10, b: 20)  // Output: Result: 30

Shorthand Closure Syntax

performOperation({ $0 * $1 }, a: 3, b: 7)  // Output: Result: 21

Summary

  • Functions are reusable code blocks defined with func.
  • Functions can take parameters and return values.
  • Parameters can have default values or accept multiple arguments (variadic).
  • Closures are anonymous functions that can be stored in variables or passed around.
  • Closures can simplify callbacks and functional programming patterns.

Leave a Reply

Your email address will not be published. Required fields are marked *