O guia de estilo atual diz que arrays e dicionários devem ser inicializados da seguinte maneira.
var names = [String]()
var lookup = [String: Int]()
Eu gostaria de empurrar isso para trás em favor de:
var names: [String] = []
var lookup: [String: Int] = [:]
Segue meu raciocínio:
[Type]()
parece estrangeiro, especialmente para um recém-chegado. Para mim, : [Type] = []
simplesmente lê melhor em muitos casos.var stuff = [1, 2, 3, 4, 5, // ... 100 more numbers
106.7, 107, "haha", nil, 108, 109]
O verificador de tipos precisa varrer todos os elementos para digitar corretamente stuff
. Mesmo quando não há truques ("haha"), já vi isso atolar o editor. (Olá arco-íris.) Fazer o verificador de tipos funcionar para você verificar novamente seu trabalho parece uma boa ideia.
var items: [Type] = []
. https://twitter.com/_jackhl/status/646480946619805697O que você acha?
@rayfix Eu passei a preferir seu formato sugerido, ou seja var names: [String] = []
Meu raciocínio é que essa abordagem parece mais consistente com a abordagem que você usaria quando deseja definir uma matriz com uma constante let
. (Você não inicializaria em uma matriz vazia, pois não seria capaz de alterá-la posteriormente)
Por exemplo, no caso de uma classe:
class SimpleClass {
let array: [String]
init(array: [String]) {
self.array = array
}
}
Ou ao definir uma matriz constante cujo valor depende de uma condição.
let array: [String]
if condition {
array = array1
} else {
array = array2
}
Grande +1 nisso!
Eu escolhi a notação var array: [Type] = []
para meus cursos porque ela me permite ensinar arrays (e dicionários) bem cedo em meus cursos. Minha abordagem de ensino é começar do zero, adicionar apenas um tópico por vez e nunca deixar as coisas sem explicação. Essa notação me permite fazer isso porque não envolve nenhum tópico com o qual os alunos ainda não estejam familiarizados no momento, como inicializadores ou genéricos.
Adoro. Eu uso sua sintaxe sugerida em minhas próprias bases de código; definição e tipo do var de um lado da equação, valor do outro. Bonito e simples.
Comentários muito úteis
@rayfix Eu passei a preferir seu formato sugerido, ou seja
var names: [String] = []
Meu raciocínio é que essa abordagem parece mais consistente com a abordagem que você usaria quando deseja definir uma matriz com uma constante
let
. (Você não inicializaria em uma matriz vazia, pois não seria capaz de alterá-la posteriormente)Por exemplo, no caso de uma classe:
Ou ao definir uma matriz constante cujo valor depende de uma condição.