Swift: Criando uma matriz com um valor padrão de instâncias de objetos distintas

Eu notei um pouco estranho (e IMHO perigoso) comportam-se emCriando uma matriz com um valor padrão. Como afirmado emSwift 2.1: Tipos de coleção

O tipo de matriz do Swift também fornece um inicializador para criar uma matriz de um determinado tamanho com todos os seus valores definidos para o mesmo valor padrão. Você passa a esse inicializador o número de itens a serem adicionados à nova matriz (chamada contagem) e um valor padrão do tipo apropriado (chamado repetidoValor):

O ponto é:mesmo valor padrão; para entender como funciona, tentei criar uma matriz de elementos dessa classe de exemplo

class User {
  private struct Shared {
    static var sequence: Int = 0
  }

  var id: Int
  var thinkTime: NSTimeInterval // typealias di Double

  init (thinkTime: NSTimeInterval) {
    User.Shared.sequence = User.Shared.sequence+1
    id = User.Shared.sequence
    self.thinkTime = thinkTime
  }
}

e este código de teste:

let  howManyUsers: Int = 3
var users = [User](count: howManyUsers, repeatedValue:User(thinkTime: 10.0))
let u2: User = User(thinkTime: 10)
let u3: User = User(thinkTime: 10)
users.append(u2)
users.append(u3)
users[1].thinkTime = 20
users[3].thinkTime = 30

for u in users {
  print("User id:\(u.id) thinktime:\(u.thinkTime)")
}

dá:

User id:1 thinktime:20.0     
User id:1 thinktime:20.0
User id:1 thinktime:20.0
User id:2 thinktime:30.0
User id:3 thinktime:10.0

que comprovam definitivamente o inicializador com o número de itens a serem adicionados à nova matriz e um valor padrão do tipo apropriado são:a mesma instância do objeto

Qual é o caminho, o mais conciso e inteligente possível, para obter uma variedade deinstâncias de objetos distintos , instanciado com o mesmo valor padrão (não a mesma instância, mas várias instâncias inicializadas com o mesmo valor padrão)?

questionAnswers(1)

yourAnswerToTheQuestion