Bird
Raised Fist0
Swiftprogramming~10 mins

Omitting argument labels with _ in Swift - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to call the function without using the argument label.

Swift
func greet(_ name: String) {
    print("Hello, \(name)!")
}
greet([1])
Drag options to blanks, or click blank then click option'
Alabel: "Alice"
Bgreet: "Alice"
Cname: "Alice"
D"Alice"
Attempts:
3 left
💡 Hint
Common Mistakes
Using the argument label when the function expects it to be omitted.
Trying to write the label explicitly even though it's omitted.
2fill in blank
medium

Complete the function call by omitting the argument label as required.

Swift
func multiply(_ a: Int, by b: Int) -> Int {
    return a * b
}
let result = multiply([1], by: 5)
Drag options to blanks, or click blank then click option'
A3
Ba: 3
Cby: 3
Db: 3
Attempts:
3 left
💡 Hint
Common Mistakes
Adding the label 'a:' when the function expects it to be omitted.
Confusing the labels for the parameters.
3fill in blank
hard

Fix the error by correctly calling the function that omits the first argument label.

Swift
func divide(_ numerator: Double, by denominator: Double) -> Double {
    return numerator / denominator
}
let quotient = divide([1], by: 2.0)
Drag options to blanks, or click blank then click option'
Anumerator: 10.0
B10.0
Cby: 10.0
Ddenominator: 10.0
Attempts:
3 left
💡 Hint
Common Mistakes
Including the label 'numerator:' causes a compile error.
Mixing up the labels for numerator and denominator.
4fill in blank
hard

Fill both blanks to define and call a function that omits the first argument label.

Swift
func power([1] base: Int, exponent: Int) -> Int {
    var result = 1
    for _ in 1...exponent {
        result *= base
    }
    return result
}
let value = power([2], exponent: 4)
Drag options to blanks, or click blank then click option'
A_
Bbase
Cexponent
D3
Attempts:
3 left
💡 Hint
Common Mistakes
Forgetting the underscore in the function definition.
Using the label when calling the function for the parameter with underscore.
5fill in blank
hard

Fill all three blanks to define and call a function with two omitted argument labels.

Swift
func concatenate([1] first: String, [2] second: String, separator: String) -> String {
    return first + separator + second
}
let text = concatenate([3], "World", separator: ", ")
Drag options to blanks, or click blank then click option'
A_
Bfirst
Csecond
D"Hello"
Attempts:
3 left
💡 Hint
Common Mistakes
Including argument labels for parameters that use underscore.
Not using underscore in the function definition.

Practice

(1/5)
1. What does the underscore _ do when used before a function parameter in Swift?
easy
A. It changes the parameter type to Any.
B. It makes the parameter optional.
C. It makes the parameter a constant inside the function.
D. It allows you to call the function without writing the argument label.

Solution

  1. Step 1: Understand the role of underscore in parameters

    The underscore before a parameter name tells Swift to omit the argument label when calling the function.
  2. Step 2: Effect on function call

    This means you can pass the argument directly without naming it, making the call shorter and simpler.
  3. Final Answer:

    It allows you to call the function without writing the argument label. -> Option D
  4. Quick Check:

    Underscore = omit argument label [OK]
Hint: Underscore means skip argument label when calling [OK]
Common Mistakes:
  • Thinking underscore makes parameter optional
  • Confusing underscore with type changes
  • Assuming underscore affects parameter mutability
2. Which of the following function declarations correctly omits the argument label for the first parameter?
easy
A. func greet(_name: String) { print("Hello, \(_name)!") }
B. func greet(_ name: String) { print("Hello, \(name)!") }
C. func greet(name _ : String) { print("Hello, \(name)!") }
D. func greet(name: String) { print("Hello, \(name)!") }

Solution

  1. Step 1: Identify correct underscore usage

    The underscore must appear before the parameter name with a space, like _ name: String.
  2. Step 2: Check each option

    func greet(_ name: String) { print("Hello, \(name)!") } uses _ name: String correctly. func greet(name: String) { print("Hello, \(name)!") } uses a label. func greet(name _ : String) { print("Hello, \(name)!") } has wrong syntax. func greet(_name: String) { print("Hello, \(_name)!") } uses an invalid parameter name.
  3. Final Answer:

    func greet(_ name: String) { print("Hello, \(name)!") } -> Option B
  4. Quick Check:

    Correct underscore syntax = func greet(_ name: String) { print("Hello, \(name)!") } [OK]
Hint: Underscore must be alone before parameter name [OK]
Common Mistakes:
  • Putting underscore after parameter name
  • Adding spaces between underscore and name incorrectly
  • Using underscore as part of parameter name
3. What is the output of this Swift code?
func multiply(_ a: Int, _ b: Int) -> Int {
    return a * b
}

print(multiply(3, 4))
medium
A. 12
B. multiply(3, 4)
C. Error: Missing argument labels
D. 7

Solution

  1. Step 1: Understand function parameters with underscore

    Both parameters have underscores, so argument labels are omitted when calling.
  2. Step 2: Calculate the function result

    Calling multiply(3, 4) returns 3 * 4 = 12, which is printed.
  3. Final Answer:

    12 -> Option A
  4. Quick Check:

    3 * 4 = 12 [OK]
Hint: Underscore means call without labels, so multiply(3,4) works [OK]
Common Mistakes:
  • Expecting argument labels in call
  • Confusing output with string of function call
  • Adding parameters incorrectly
4. Identify the error in this Swift function call:
func divide(_ numerator: Double, denominator: Double) -> Double {
    return numerator / denominator
}

divide(10, denominator: 2)
medium
A. Cannot mix omitted and required labels in parameters
B. Missing argument label for denominator
C. No error, code runs fine
D. Missing argument label for numerator

Solution

  1. Step 1: Analyze parameter labels

    The first parameter uses underscore, so no label needed. The second requires label denominator.
  2. Step 2: Check function call

    The call uses divide(10, denominator: 2), which matches the parameter labels correctly.
  3. Final Answer:

    No error, code runs fine -> Option C
  4. Quick Check:

    Underscore omits first label, second label required [OK]
Hint: First param no label, second param label required [OK]
Common Mistakes:
  • Expecting both labels omitted
  • Trying to omit second label incorrectly
  • Confusing parameter order
5. You want to write a Swift function formatDate that takes a Date and a String format. You want to call it like formatDate(myDate, "yyyy-MM-dd") without argument labels. Which function declaration is correct?
hard
A. func formatDate(_ date: Date, _ format: String) -> String { /* implementation */ }
B. func formatDate(date: Date, format: String) -> String { /* implementation */ }
C. func formatDate(_ date: Date, format: String) -> String { /* implementation */ }
D. func formatDate(date: Date, _ format: String) -> String { /* implementation */ }

Solution

  1. Step 1: Understand call without labels

    Calling formatDate(myDate, "yyyy-MM-dd") means both parameters must omit labels.
  2. Step 2: Match function declaration

    Only func formatDate(_ date: Date, _ format: String) -> String { /* implementation */ } uses underscore for both parameters, allowing call without labels.
  3. Final Answer:

    func formatDate(_ date: Date, _ format: String) -> String { /* implementation */ } -> Option A
  4. Quick Check:

    Both params underscore = no labels in call [OK]
Hint: Use underscore for all params to omit all labels [OK]
Common Mistakes:
  • Omitting only one label but calling without both
  • Mixing labeled and unlabeled parameters incorrectly
  • Forgetting underscore syntax
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