Bird
Raised Fist0
Swiftprogramming~5 mins

Generic type declaration in Swift - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a generic type declaration in Swift?
A generic type declaration lets you write flexible, reusable functions and types that can work with any type, instead of a specific one.
Click to reveal answer
beginner
How do you declare a generic function in Swift?
You add a placeholder type inside angle brackets after the function name, like <T>, and use T as a type inside the function.
Click to reveal answer
intermediate
Example: What does this Swift code do?
func swapValues<T>(a: inout T, b: inout T) { let temp = a; a = b; b = temp }
This function swaps the values of two variables of any type T. It uses generics so it works with Int, String, or any other type.
Click to reveal answer
intermediate
How do you declare a generic type (like a class or struct) in Swift?
You add a placeholder type inside angle brackets after the type name, for example struct Box<T> { var value: T }.
Click to reveal answer
beginner
Why use generic type declarations instead of specific types?
Generics let you write code once and use it with many types, making your code reusable, safer, and easier to maintain.
Click to reveal answer
What symbol is used to declare a generic type placeholder in Swift?
A[]
B{}
C()
D<>
Which keyword is used to declare a generic function in Swift?
Afunc
Bgeneric func
Cfunc<T>
Dfunc with <T>
What does the generic type T represent in Swift?
AA placeholder for any type
BA specific type called T
CA variable name
DA function name
Which of these is a correct generic struct declaration in Swift?
Astruct Box<T> = { var value: T }
Bstruct Box<T> { var value: T }
Cstruct Box<T> (var value: T)
Dstruct Box { var value: T }
Why are generics useful in Swift?
AThey make code run faster
BThey replace all functions
CThey allow writing reusable and type-safe code
DThey are only for classes
Explain how to declare and use a generic function in Swift.
Think about how you write <T> after the function name and use T as a type.
You got /3 concepts.
    Describe the benefits of using generic type declarations in Swift programming.
    Why would you want one function or type to work with many types?
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of using generic type declaration in Swift?
      easy
      A. To declare variables with fixed types only
      B. To write flexible functions or types that can work with any data type
      C. To create functions that only accept integers
      D. To make code run faster by avoiding type checks

      Solution

      1. Step 1: Understand generics concept

        Generics allow writing code that works with any type, not just one fixed type.
      2. Step 2: Compare options with concept

        Only To write flexible functions or types that can work with any data type describes this flexibility. Others limit types or mention speed, which is incorrect.
      3. Final Answer:

        To write flexible functions or types that can work with any data type -> Option B
      4. Quick Check:

        Generics = Flexible code for any type [OK]
      Hint: Generics = code that works with any type [OK]
      Common Mistakes:
      • Thinking generics fix types instead of generalizing
      • Confusing generics with performance optimization
      • Assuming generics only work with numbers
      2. Which of the following is the correct syntax to declare a generic function in Swift?
      easy
      A. func swapValues(a: T, b: T) { let temp = a; a = b; b = temp }
      B. func swapValues<T>(a: T, b: T) { let temp = a; a = b; b = temp }
      C. func swapValues<T>(a: T, b: T) -> T { return a }
      D. func swapValues<T>(a: inout T, b: inout T) { let temp = a; a = b; b = temp }

      Solution

      1. Step 1: Identify correct generic syntax

        Generic functions use angle brackets <T> and parameters with inout to swap values.
      2. Step 2: Check each option

        func swapValues<T>(a: inout T, b: inout T) { let temp = a; a = b; b = temp } correctly uses func swapValues<T>(a: inout T, b: inout T) and swaps values. Others miss inout or have wrong return types.
      3. Final Answer:

        func swapValues<T>(a: inout T, b: inout T) { let temp = a; a = b; b = temp } -> Option D
      4. Quick Check:

        Generic function with inout parameters = func swapValues<T>(a: inout T, b: inout T) { let temp = a; a = b; b = temp } [OK]
      Hint: Generic functions need <T> and inout for swapping [OK]
      Common Mistakes:
      • Forgetting <T> after function name
      • Not using inout for parameters to modify them
      • Adding incorrect return types
      3. What will be the output of this Swift code?
      func printType<T>(_ value: T) {
          print("Type is: \(type(of: value))")
      }
      printType(42)
      printType("Hello")
      medium
      A. Type is: Int\nType is: String
      B. Type is: T\nType is: T
      C. Type is: Any\nType is: Any
      D. Type is: Optional<Int>\nType is: Optional<String>

      Solution

      1. Step 1: Understand generic function behavior

        The function prints the actual type of the passed value using type(of:).
      2. Step 2: Analyze calls with 42 and "Hello"

        42 is an Int, "Hello" is a String, so output prints their types exactly.
      3. Final Answer:

        Type is: Int\nType is: String -> Option A
      4. Quick Check:

        type(of:) shows actual type = Type is: Int\nType is: String [OK]
      Hint: type(of:) prints actual type, not generic placeholder [OK]
      Common Mistakes:
      • Assuming generic type T prints literally
      • Confusing Any with specific types
      • Expecting Optional types without optionals
      4. Identify the error in this generic struct declaration:
      struct Box<T> {
          var value: T
          func printValue() {
              print(value)
          }
      }
      
      let box = Box(value: 5)
      box.printValue()
      medium
      A. Missing generic type declaration after struct name
      B. Cannot create instance without specifying type explicitly
      C. No error; code compiles and prints 5
      D. printValue() must be static to access value

      Solution

      1. Step 1: Review struct and instance creation

        The struct declares generic type T correctly and has a property value of type T.
      2. Step 2: Check instance creation and method call

        Swift infers T as Int from 5. Calling printValue() prints 5 without error.
      3. Final Answer:

        No error; code compiles and prints 5 -> Option C
      4. Quick Check:

        Generic struct with inferred type works fine = No error; code compiles and prints 5 [OK]
      Hint: Swift infers generic types from initializer values [OK]
      Common Mistakes:
      • Thinking generic type must be explicitly stated
      • Assuming printValue() needs to be static
      • Believing missing syntax error in struct declaration
      5. How can you declare a generic function in Swift that accepts two parameters of different types and returns a tuple of those types?
      hard
      A. func combine(_ a: T, _ b: U) -> (T, U) { return (a, b) }
      B. func combine<T>(_ a: T, _ b: T) -> (T, T) { return (a, b) }
      C. func combine(_ a: T, _ b: U) -> T { return a }
      D. func combine(_ a: T, _ b: U) -> (U, T) { return (b, a) }

      Solution

      1. Step 1: Understand requirement for two different generic types

        The function must accept two parameters of different types, so two generic placeholders T and U are needed.
      2. Step 2: Check return type as tuple of those types

        Return type should be (T, U) matching parameter order and types.
      3. Step 3: Verify options

        func combine(_ a: T, _ b: U) -> (T, U) { return (a, b) } matches all requirements. func combine<T>(_ a: T, _ b: T) -> (T, T) { return (a, b) } uses same type for both parameters. func combine(_ a: T, _ b: U) -> T { return a } returns only one type. func combine(_ a: T, _ b: U) -> (U, T) { return (b, a) } swaps tuple order, which is not asked.
      4. Final Answer:

        func combine<T, U>(_ a: T, _ b: U) -> (T, U) { return (a, b) } -> Option A
      5. Quick Check:

        Two generic types + tuple return = func combine<T, U>(_ a: T, _ b: U) -> (T, U) { return (a, b) } [OK]
      Hint: Use two generic placeholders and tuple return type [OK]
      Common Mistakes:
      • Using one generic type for both parameters
      • Returning only one value instead of tuple
      • Swapping tuple order incorrectly
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard