maxcodes
maxcodes

Reputation: 544

How does one pass parameters to a function in Swift? Missing argument in call

Swift function parameters not accepted. Missing argument?

Calculate(theA, theB) //error: Missing argument label 'sideB:' in call

func Calculate(sideA: Int, sideB: Int) -> Int {
    var ans = sideA + sideB
    return ans;
}

Upvotes: 0

Views: 156

Answers (2)

TheCodeTalker
TheCodeTalker

Reputation: 705

you have missed the sideB param name in swift 3 first parameter is optional but second param is Mandatory that _ in there That’s an underscore. It changes the way the method is called. To illustrate this, here’s a very simple function:

func doStuff(thing: String) {
    // do stuff with "thing"
}

It’s empty, because its contents don’t matter. Instead, let’s focus on how it’s called. Right now, it’s called like this:

doStuff(thing: "Hello")

You need to write the name of the thing parameter when you call the doStuff() function. This is a feature of Swift, and helps make your code easier to read. Sometimes, though, it doesn’t really make sense to have a name for the first parameter, usually because it’s built into the method name.

When that happens, you use the underscore character like this:

func doStuff(_ thing: String) {
    // do stuff with "thing"
}

That means “when I call this function I don’t want to write thing, but inside the function I want to use thing to refer to the value that was passed in.

Upvotes: 0

John Riselvato
John Riselvato

Reputation: 12904

You are missing the sideB: in your function call. I didn't want to rewrite your code (since you posted an image) but here's the working function call.

func calcButton(sender: AnyObject) {
    let a: Int = 10
    let b: Int = 11

    calculate(a, sideB: b) //<-- Missing it here
}

func calculate(sideA: Int, sideB: Int) -> Int {
    let a = sideA + sideB
    return a
}

you might also want to have both variables in the function call so you can do this instead:

func calcButton(sender: AnyObject) {
    let a: Int = 10
    let b: Int = 11

    calculate(sideA: a, sideB: b)
}

func calculate(sideA A: Int, sideB B: Int) -> Int {
    return A + B
}

Just an FYI, use tab completion instead of writing out the function. Xcode will let you know all the function variables with placeholders so you can type them in.

Upvotes: 2

Related Questions