Panduan gaya saat ini mengatakan bahwa array dan kamus diinisialisasi dengan cara berikut.
var names = [String]()
var lookup = [String: Int]()
Saya ingin mendorong kembali ini demi:
var names: [String] = []
var lookup: [String: Int] = [:]
Inilah alasan saya:
[Type]()
terlihat asing, terutama untuk pendatang baru. Bagi saya, : [Type] = []
hanya membaca lebih baik dalam banyak kasus.var stuff = [1, 2, 3, 4, 5, // ... 100 more numbers
106.7, 107, "haha", nil, 108, 109]
Pemeriksa tipe perlu memindai semua elemen untuk mengetik dengan benar infer stuff
. Bahkan ketika tidak ada trik ("haha"), saya telah melihat ini menghambat editor. (Halo pelangi.) Membuat pemeriksa tipe bekerja untuk Anda untuk memeriksa ulang pekerjaan Anda sepertinya ide yang bagus.
var items: [Type] = []
. https://twitter.com/_jackhl/status/646480946619805697Bagaimana menurut anda?
@rayfix Saya semakin menyukai format yang Anda sarankan yaitu var names: [String] = []
Rasional saya adalah bahwa pendekatan ini terlihat lebih konsisten dengan pendekatan yang akan Anda ambil ketika Anda ingin mendefinisikan sebuah array dengan konstanta let
. (Anda tidak akan menginisialisasi ke array kosong karena Anda tidak akan dapat mengubahnya nanti)
Misalnya dalam kasus kelas:
class SimpleClass {
let array: [String]
init(array: [String]) {
self.array = array
}
}
Atau ketika mendefinisikan sebuah array konstan yang nilainya tergantung pada suatu kondisi.
let array: [String]
if condition {
array = array1
} else {
array = array2
}
Besar +1 ini!
Saya memilih notasi var array: [Type] = []
untuk kursus saya karena ini memungkinkan saya untuk mengajar array (dan kamus) cukup awal di kursus saya. Pendekatan pengajaran saya adalah memulai dari awal, menambahkan hanya satu topik pada satu waktu dan tidak pernah meninggalkan hal-hal yang tidak dapat dijelaskan. Notasi ini memungkinkan saya untuk melakukan itu karena tidak melibatkan topik apa pun yang belum dikenal siswa pada saat itu, seperti inisialisasi atau generik.
Suka sekali. Saya menggunakan sintaks yang Anda sarankan dalam basis kode saya sendiri; definisi dan jenis var di satu sisi persamaan, nilai di sisi lain. Bagus dan sederhana.
Komentar yang paling membantu
@rayfix Saya semakin menyukai format yang Anda sarankan yaitu
var names: [String] = []
Rasional saya adalah bahwa pendekatan ini terlihat lebih konsisten dengan pendekatan yang akan Anda ambil ketika Anda ingin mendefinisikan sebuah array dengan konstanta
let
. (Anda tidak akan menginisialisasi ke array kosong karena Anda tidak akan dapat mengubahnya nanti)Misalnya dalam kasus kelas:
Atau ketika mendefinisikan sebuah array konstan yang nilainya tergantung pada suatu kondisi.