iOS Build a Simple iPhone App with Swift Getting Started with iOS Development Swift Recap Part 2

Niilo Pirttijärvi
PRO
Niilo Pirttijärvi
Pro Student 2,354 Points

Swift recap part 2?

Hi what is the purpose of the underscore space "_ " in the code?

robots.swift
class Point {
  var x: Int
  var y: Int

  init(x: Int, y: Int) {
    self.x = x
    self.y = y
  }
}

class Machine {
  var location: Point

  init() {
    self.location = Point(x: 0, y: 0)
  }

  func move(_ direction: String) {
    print("Do nothing! I am a machine!")
  }
}

// Enter your code below
class Robot: Machine {
    override func move(_ direction: String) {

        switch direction {
        case "Up": self.location.y += 1
        case "Down": self.location.y -= 1
        case "Left": self.location.x -= 1
        case "Right": self.location.x += 1
        default: break

        }
    }
}

1 Answer

Jari Koopman
Jari Koopman
Python Web Development Techdegree Graduate 29,349 Points

Hi Niilo,

Having an underscore as first "argument" in a function, makes it an unnamed argument for the outside world. First, let's take a look at a normal function (without an underscore as first arg):

someFunction(firstArgument: String) {
    // Do something
}

You'd call it like this:

let argument: String = "Some argument"
someFunction(firstArgument: argument)

But, if you'd create a function using the underscore like so:

someFunction(_ firstArgument: String) {
    // Do something
}

you would be able to call it like this:

let argument: String = "Some argument"
someFunction(argument)

So, basically, having the underscore there, eliminates the need of the argument name in a function call.

Hope this helped,

Regards, Jari