title: How to update an array with WritableKeyPath in Swift 4.0
body: <p>In Swift 4.0, I have an array of structs. Is there a way to use keyPaths to update all items in the array without using manually iterating like map or forEach? Something similar to objc <code>[people makeObjectsPerformSelector: @selector(setName:) withObject: @"updated"];</code></p>
  
  <pre><code>struct Person {
      var name: String? = "Empty"
  }
  var people = [Person(), Person()]
  
  //This only updates one person:
  people[keyPath: \[Person].[0].name] = "single update"
  
  //I'm looking to accomplish something like this without a map
  let updatedPeople = people.map { (person: Person) -&gt; Person in
      var copy = person
      copy[keyPath: \Person.name] = "updated"
      return copy
  }
  </code></pre>
  
  <p>something like 
      people[keyPath: \[People].all.name] = "update all without manually iterating"</p>