Explicación de syntax: corchetes en Swift

Estoy estudiando Swift y me confundo con la siguiente syntax:

var treasures: [Treasure] = [] 

El tesoro es una class personalizada, declarada de la siguiente manera:

 class Treasure: NSObject { ... 

En Obj-C, los corchetes significan el método, pero qué significa eso:

  var treasures: [Treasure] = [] 

¿Alguien puede dar explicaciones? ¡Gracias!

Ok, este es el significado de

 var treasures: [Treasure] = [] 
  • var : estás declarando una variable
  • tesoros : el nombre de tu variable
  • [Treasure] : el tipo de tu variable, en este caso el tipo es Array of Treasure, el comstackdor te permitirá insert solo un object de tipo Treasure en tu Array
  • [] : el object real (Array) referencedo por su variable, en este caso un Array vacío.

Por ejemplo, si desea que la matriz contenga 2 elementos, puede escribir

 var treasures: [Treasure] = [Treasure(), Treasure()] 

Espero que esto ayude.

Actualización: mi ejemplo también se puede escribir de esta manera

 var treasures = [Treasure(), Treasure()] 

De hecho, gracias a la Inferencia de tipo, el comstackdor puede deducir el tipo de tesoro de la variable que mira el tipo de valor asignado.

[Treasure] es solo un azúcar syntax para Array<Treasure> .

De la misma manera [String:Treasure] es solo una syntax de azúcar para Dictionary<String,Treasure> .

[] es solo una matriz vacía del tipo que definió. De la misma manera [:] es un dictionary vacío.

Cuando se trata de Swift y corchetes, las reglas son simples. Se usan solo en dos situaciones:

1) trabajando con los types Array y Dictionary :

 let vectors : [[Int]] = [[1,2,3],[4,5,6]] let birthBook : [Int:[String]] = [1987:["John","William"], 1990: ["Mary"]] 

2) para suscribir objects que admiten subscripciones:

 class RouteMapper { private var routeMap : [String:String] = [:] subscript(endpoint: String) -> String { get { if let route = routeMap[endpoint] { return route } return "/" } set(newValue) { routeMap[endpoint] = newValue } } } let routeMapper = RouteMapper() routeMapper["users"] = "/v1/confirmed/users" let url = routeMapper["admins"] 

Dado que [ y ] no están permitidos en operadores personalizados, estos son los únicos usos por ahora.