Advertisement
  1. Code
  2. Swift

Swift dari Dasar:  Collection dan Tuple

Scroll to top
Read Time: 10 min
This post is part of a series called Swift From Scratch.
Swift From Scratch: Variables and Constants
Swift From Scratch: Optionals and Control Flow

() translation by (you can also view the original English article)

Pada artikel sebelumnya, Anda belajar tentang variabel, konstanta, dan beberapa tipe data umum, seperti bilangan integer, float, dan string. Pada artikel ini, kita akan belajar ke collection. Perpustakaan standar Swift mendefinisikan dua jenis collection, array dan dictionary. Mari kita mulai dengan array.

1. Array

Jika Anda terbiasa dengan Objective-C, JavaScript, atau PHP, maka Anda tidak akan kesulitan membungkus kepala Anda seputar konsep array. Array adalah koleksi nilai yang diindeks dengan nol dan terindeks. Namun, ada beberapa perbedaan penting.

Tipe

Perbedaan penting pertama dengan array di Objective-C adalah bahwa nilai yang tersimpan dalam array selalu memiliki tipe yang sama. Pada awalnya, ini mungkin tampak seperti pembatasan yang signifikan, tapi sebenarnya tidak demikian. Padahal, keterbatasan ini memiliki keunggulan penting. Kita tahu persis tipe apa yang kita dapatkan saat kita meminta array untuk salah satu nilainya.

Perbedaan kunci lainnya dengan array Objective-C adalah jenis nilai yang bisa disimpan oleh sebuah array. Dalam Objective-C, array hanya dapat menyimpan nilai dari tipe kelas. Swift tidak memiliki keterbatasan ini. Sebuah array di Swift dapat menyimpan string, bilangan bulat, float dan juga contoh kelas. Bagaimana ini bekerja dan mengapa hal ini mungkin terjadi di Swift akan menjadi jelas nanti dalam rangkaian ini saat kita membahas kelas dan struktur.

Deklarasi

Saat membuat array dapat dilakukan dengan beberapa cara, Anda perlu mengingat bahwa Swift perlu mengetahui jenis nilai yang akan Anda simpan di array. Buat playground baru di Xcode seperti yang kami lakukan di artikel sebelumnya dan tambahkan baris berikut ke playground Anda.

1
var array1: Array<String>
2
var array2: [String]
3
var array3 = ["Apple", "Pear", "Orange"]

Baris kedua adalah singkatan untuk baris pertama. Tanda kurung siku yang membungkus kata kunci String memberitahu Swift bahwa kita sedang menyatakan sebuah array yang hanya berisi objek String.

Anda bisa membaca baris kode pertama sebagai "Kami mendeklarasikan sebuah variabel bernama array1 dari tipe Array yang hanya berisi objek String." Perhatikan bahwa saya mengutamakan tipe karena itulah yang disebut oleh titik dua.

Baris ketiga menunjukkan kepada kita bagaimana menginisialisasi array menggunakan array literal. Array literal terlihat sangat mirip dengan literal array di Objective-C. Perbedaan utamanya adalah tidak adanya simbol @ yang mendahului tanda kurung siku dan literal string.

Ada juga cara yang bagus untuk menginisialisasi array dengan sejumlah nilai default yang telah ditentukan. Sintaksnya mungkin membingungkan pada awalnya, tapi luangkan waktu untuk memahaminya.

1
var a = [String](count: 5, repeatedValue: "Test")

Array yang dihasilkan berisi lima senar, dengan masing-masing string sama dengan "Test". Untuk lebih memahami inisialisasi di atas, lihat dua baris kode berikut di mana kami menginisialisasi rangkaian string kosong.

1
var b = Array<String>()
2
var c = [String]()

Jangan khawatir jika Anda masih bingung. Kita akan mengeksplorasi sintaksnya secara lebih rinci begitu kita mulai berurusan dengan kelas dan fungsi. Pada artikel ini, kami hanya fokus pada koleksi.

Mutability

Salah satu aspek Swift yang akan segera Anda hargai adalah bagaimana cara menyatakan koleksi yang bisa berubah. Potongan kode di atas, misalnya, menyatakan tiga array yang bisa berubah. Sebuah mutable array didefinisikan dengan menggunakan kata kunci var. Sesederhana itu Jika Anda tidak ingin sebuah array bisa diubah, gunakan kata kunci let. Swift bertujuan untuk intuitif dan mudah digunakan, dan implementasi mutabilitas Swift adalah contoh sempurna dari tujuan ini.

Mendapatkan dan Menetapkan Nilai

Untuk mengakses nilai yang tersimpan dalam array, kita menggunakan sintaks subscript yang sama seperti pada Objective-C. Pada contoh berikut, kita meminta array3 untuk elemen kedua, string "pear".

1
array3[1]

Mengganti nilai yang tersimpan pada indeks 1 adalah sesederhana menetapkan nilai baru menggunakan sintaks subscript yang sama. Pada contoh berikut, kita mengganti "pear" pada indeks 1 dengan "peach".

1
array3[1] = "Peach"

Ini hanya mungkin karena arraynya bisa berubah, artinya kita menggunakan kata kunci var untuk mendeklarasikan array. Mutasi array konstan tidak mungkin dilakukan. Ada teknik yang lebih maju untuk memanipulasi isi array, namun konsep dasarnya sama.

Menggabungkan dua array sama mudahnya dengan menambahkan keduanya. Dalam contoh berikut, kita mendeklarasikan dan menggabungkan dua array yang tidak berubah. Perhatikan bahwa array yang dihasilkan, c, tidak perlu diubah untuk bekerja.

1
let a = [1, 2, 3]
2
let b = [4, 5, 6]
3
4
let c = a + b

Namun, itu adalah kunci bahwa nilai yang tersimpan dalam a dan b memiliki tipe yang sama. Alasannya harus jelas sekarang. Nilai yang tersimpan dalam array perlu tipe yang sama. Contoh berikut akan menghasilkan kesalahan.

1
let a = [1, 2, 3]
2
let b = [1.5, 5.2, 6.3]
3
4
let c = a + b

Untuk menambahkan array ke array yang bisa berubah, kita menggunakan operator +=. Perhatikan bahwa operan di sebelah kanan adalah array. Operasi ini tidak akan bekerja jika kita menghapus tanda kurung siku sekitar 4.

1
var a = [1, 2, 3]
2
a += [4]

Operasi

Array adalah objek di mana Anda dapat melakukan berbagai operasi. Array mengekspos sejumlah fungsi atau metode. Untuk memanggil metode pada objek, Anda menggunakan notasi titik. Tambahkan baris berikut ke playground Anda untuk menambahkan item ke array3.

1
array3.append("Cherry")

Mari kita lihat berapa banyak item yang berisi array3 dengan menerapkan metode count. Ini menghasilkan 4 di panel hasil di sebelah kanan.

1
array3.count

Ini juga memungkinkan untuk memasukkan item pada indeks tertentu dengan meminta metode insert array seperti yang ditunjukkan di bawah ini. Metode insert menerima lebih dari satu parameter dan mungkin terlihat agak aneh pada awalnya.

1
array3.insert("Prune", atIndex: 2)

Seperti Objective-C, Swift mendukung parameter yang diberi nama untuk meningkatkan keterbacaan. Hasilnya adalah kode itu lebih mudah dibaca dan dipahami, dan fungsi atau metode tidak perlu banyak dijelaskan dalam hal apa yang mereka lakukan. Jelas, misalnya, bahwa metode insert memasukkan elemen pada indeks 2.

Sementara Swift lebih ringkas dan kurang verbose daripada Objective-C, itu mendukung parameter bernama. Jika Anda berasal dari PHP, Ruby, atau JavaScript, ini pasti sesuatu yang akan membiasakan diri.

Metode Convenience

Yang benar-benar saya nikmati tentang Swift adalah properti convenience mirip Ruby dan metode perpustakaan standar Swift. Sebuah array, misalnya, memiliki properti isEmpty yang memberitahu Anda jika array berisi elemen. Ini tidak lebih dari singkatan untuk memeriksa properti array count. Hasilnya, bagaimanapun, adalah kode yang lebih ringkas dan mudah dibaca.

1
array3.isEmpty

2. Dictionary

Dictionary berperilaku sangat mirip dengan dictionary di Objective-C. Dictionary menyimpan koleksi nilai yang tidak teratur. Setiap nilai dalam dictionary dikaitkan dengan sebuah kunci. Dengan kata lain, dictionary menyimpan sejumlah pasangan kunci / nilai.

Tipe

Seperti halnya dengan array, kunci dan nilai yang tersimpan dalam dictionary perlu tipe yang sama. Ini berarti bahwa jika Anda meminta dictionary untuk nilai kunci tertentu, Anda tahu jenis dictionary yang akan dikembalikan.

Deklarasi

Mendeklarasikan dictionary sama dengan mendeklarasikan sebuah array. Perbedaannya adalah Anda perlu menentukan tipe untuk kedua kunci dan nilai. Contoh berikut menunjukkan tiga cara untuk mendeklarasikan dictionary.

1
var dictionary1: Dictionary<String, Int>
2
var dictionary2: [String: Int]
3
var dictionary3 = ["Apple": 3, "Pear": 8, "Orange": 11]

Baris kedua adalah singkatan untuk baris pertama. Kunci kamus ini perlu tipe String sementara nilainya diharapkan tipe Int. Kata kunci var menunjukkan bahwa dictionary dapat diubah.

Anda bisa membaca baris kode pertama sebagai "Kami mendeklarasikan sebuah variabel bernama dictionary1 dari tipe Dictionary yang hanya berisi kunci tipe String dan nilai tipe Int."

Baris ketiga menggambarkan bagaimana kita bisa menginisialisasi kamus menggunakan kamus literal. Ini serupa dengan sintaks yang kita gunakan di Objective-C, namun perhatikan bahwa kurung kurawal digantikan oleh tanda kurung siku dan hurufnya tidak diawali dengan simbol @.

Mendapatkan dan Menetapkan Nilai

Mengakses nilai sama dengan mengakses nilai array. Satu-satunya perbedaan adalah Anda menggunakan kunci dan bukan indeks nilai yang perlu Anda akses. Contoh berikut menggambarkan hal ini.

1
let value = dictionary3["Apple"]
2
println(value)

Anda akan melihat bahwa Xcode memberi tahu kita bahwa value nilainya tidak 3, tapi Optional(3). Apa artinya ini? Swift menggunakan opsi untuk membungkus nilai yang bisa menjadi salah satu dari dua hal, nilai atau nil. Jangan khawatir tentang pilihan pada saat ini. Kita akan fokus pada pilihan di artikel berikutnya dari seri ini. Biarkan saya memberi tahu Anda bahwa opsi adalah konsep kunci lain dari bahasa pemrograman Swift.

Sangat menarik untuk menunjukkan bahwa sintaks untuk mengakses nilai kamus identik dengan array jika kunci kamus adalah tipe Int. Lihatlah contoh berikut untuk melihat apa yang saya maksud.

1
var dictionary4 = [0: "Apple", 1: "Pear", 2: "Orange"]
2
let fruit = dictionary4[0]

Operasi

Seperti halnya array, perpustakaan standar Swift mendefinisikan berbagai operasi yang dapat Anda lakukan pada kamus. Sebuah dictionary mengembalikan jumlah pasangan kunci / nilai dengan memanggil count. Melepaskan sepasang kunci / nilai mudah dan intuitif seperti contoh berikut. Tentu saja, ini hanya mungkin jika dictionarynya bisa berubah-ubah.

1
dictionary4.removeValueForKey(0)

Saat Anda mulai belajar Swift, Anda kadang-kadang akan menemukan cuplikan kode yang terlihat aneh atau membingungkan. Lihatlah baris berikut di mana kami pertama kali mendeklarasikan sebuah dictionary dan kemudian menghapus pasangan kunci / nilainya.

1
var dictionary = [String: Int]()
2
3
dictionary["Oranges"] = 2
4
dictionary["Apples"] = 10
5
dictionary["Pears"] = 5
6
7
dictionary = [:]

Anda harus mengakui bahwa baris terakhir terlihat agak aneh. Karena Swift mengetahui jenis kunci dan nilai yang bisa disimpan dalam dictionary, menghapuskan dictionary semudah memasukkan dictionary kosong ke dalamnya.

Tidak perlu menentukan jenis kunci dan nilai dalam kasus ini, karena kita sudah melakukannya saat kita mendeklarasikan dictionary di baris pertama. Ini menunjukkan detail penting lainnya, yaitu jenis nilai yang dapat Anda simpan dalam array dan dictionary tidak dapat berubah begitu koleksi diumumkan.

3. Tuple

Anda akan menyukai tuple. Sementara tuple bukan koleksi, mereka juga mengelompokkan beberapa nilai. Mirip dengan array dan dictionary, tuple bisa mengandung nilai dari jenis apa pun. Perbedaan utamanya, bagaimanapun, adalah bahwa nilai yang tersimpan dalam tuple tidak perlu sama jenisnya. Mari kita lihat sebuah contoh untuk menjelaskan hal ini secara lebih rinci.

1
var currency = ("EUR", 0.81)
2
var time = (NSDate(), "This is my message.")
3
var email = ("Bart Jacobs", "bart@example.com")

Contoh pertama menyatakan sebuah tuple bernama currency yang bertipe (String, Int). Tuple kedua, time, berisi contoh NSDate dan string literal. Nilai yang tersimpan dalam email keduanya berupa String, yang berarti email adalah tipe (String, String).

Mengakses Nilai

Indeks

Untuk mengakses nilai yang tersimpan dalam tuple, Anda menggunakan indeks yang sesuai dengan nilai yang Anda minati.

1
var rate = currency.1
2
var message = time.1
3
var name = email.0

Xcode menunjukkan kepada kita indeks dari setiap nilai yang tersimpan dalam tuple di panel hasil playground di sebelah kanan.

Nama

Untuk meningkatkan keterbacaan, Anda bisa memberi nama nilai yang tersimpan dalam tupel. Hasilnya adalah Anda dapat mengakses nilai tuple melalui nama mereka dan bukan indeks mereka. Mendeklarasikan tuple sedikit berbeda dalam kasus itu.

1
var currency = (name: "EUR", rate: 0.81)
2
let currencyName = currency.name
3
let currencyRate = currency.rate

Penguraian

Ada cara kedua yang lebih elegan untuk bekerja dengan nilai yang tersimpan dalam tuple. Lihatlah contoh berikut di mana kita menguraikan isi currency.

1
let (currencyName, currencyRate) = currency

Nilai currency pada indeks 0 disimpan dalam currencyName dan nilai pada indeks 1 disimpan dalam currencyRate. Tidak perlu menentukan jenis currencyName dan currencyRate sejak Swift menambahkan jenis dari nilai yang tersimpan dalam currency. dengan kata lain, tipe currencyName adalah String dan tipe currencyRate adalah Float.

Jika Anda hanya tertarik pada nilai tupel tertentu, Anda dapat menggunakan garis bawah untuk memberi tahu Swift nilai mana yang tidak Anda minati.

1
let (currencyName, _) = currency

Pelajari Lebih Lanjut di Kursus Pemrograman Swift Kami

Bawa pendidikan Swift Anda ke tingkat berikutnya dan pelajari semuanya dari Playground sampai Pemrograman Berorientasi Objek dalam kursus lengkap pengembangan Swift.

Kesimpulan

Array dan dictionary merupakan komponen fundamental hampir setiap bahasa pemrograman Swift dan tidak berbeda. Sementara collection berperilaku sedikit berbeda di Swift, tidak butuh waktu lama untuk mengenal jenis collection Swift jika Anda pernah bekerja dengan array dan dictionary dalam bahasa pemrograman lainnya. Pada tutorial selanjutnya, kita mengeksplorasi optionals dan control flow.

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.