Daniel Tull: Today I Learned

Using a do block to provide a limited scope for variables

Thursday, 20 May 2021

When writing a test, sometimes we need to set up a variable with

func test() {
  var request1 = URLRequest...
  mutate(&request1)
  XCTAssert(request1.url.host, "blah")
  
  var request2 = URLRequest...
  mutate(&request2)
  XCTAssert(request2.url.host, "blah")
}
func test() {
  do {
	  var request = URLRequest...
	  mutate(&request)
  	XCTAssert(request.url.host, "blah")
  }
  
  do {
	  var request = URLRequest...
  	mutate(&request)
	  XCTAssert(request.url.host, "blah")
  }
}

Apart from not having to number our variables, we also make sure we don’t accidently refer to an incorrect request from a previous assertion.