Unlimited WordPress themes, graphics, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Swift
Code

Swift dari Dasar: Optional dan Control Flow

by
Difficulty:BeginnerLength:LongLanguages:
This post is part of a series called Swift From Scratch.
Swift From Scratch: Collections and Tuples
Swift From Scratch: An Introduction to Functions

Indonesian (Bahasa Indonesia) translation by Hasannudin Amin (you can also view the original English article)

Pada artikel sebelumnya, Anda mempelajari beberapa konsep dasar bahasa pemrograman Swift. Jika sudah diprogram sebelumnya, saya yakin Anda melihat beberapa kesamaan dengan bahasa pemrograman lainnya, seperti Ruby, JavaScript, dan Objective-C.

Pada artikel ini, kita belajar control flow di Swift. Sebelum kita bisa membahas control flow secara lebih rinci, kita perlu melihat konsep yang baru bagi kebanyakan Anda, optional. Optional adalah fitur keselamatan Swift yang lain. Pada awalnya, mungkin terlihat seperti kerumitan untuk menggunakan optional, tapi Anda akan segera mengetahui bahwa optional akan membuat kode Anda lebih aman.

1. Optional

Kita sudah melihat bahwa sebuah variabel harus diinisialisasi sebelum dapat digunakan. Lihatlah contoh berikut untuk lebih memahami apa artinya ini.

Jika Anda terbiasa bekerja dengan string di Objective-C, mungkin Anda akan terkejut bahwa Swift menunjukkan kesalahan kepada Anda. Mari kita lihat apa kesalahan yang diberikan ke kita.

Dalam banyak bahasa, variabel memiliki nilai default awal. Dalam Objective-C, misalnya, string dalam cuplikan kode berikut sama dengan nil.

Namun, konsep nil berbeda dalam Swift dan Objective-C. Kita akan membahas nil secara lebih rinci nanti.

Apa itu optional?

Swift menggunakan optional untuk merangkum konsep penting, yaitu variabel atau konstan memiliki nilai atau tidak. Sesederhana itu di Swift. Untuk mendeklarasikan variabel atau konstan sebagai opsional, kita menambahkan tanda tanya ke jenis variabel atau konstan.

Variabel str bukan lagi tipe String. Sekarang ada tipe optional String. Hal ini penting untuk dipahami. Hasilnya atau efek sampingnya adalah kita tidak bisa lagi berinteraksi langsung dengan nilai variabel str. Nilai aman disimpan dalam optional dan kita perlu meminta opsional untuk nilai itu encapsulates.

Pembukaan Paksa

Salah satu cara untuk mengakses nilai pilihan adalah dengan cara paksa. Kita bisa mengakses nilai variabel str dengan menambahkan sebuah ! ke nama variabel

Penting agar Anda yakin bahwa optional berisi nilai saat Anda memaksa membukanya. Jika optional tidak memiliki nilai dan Anda memaksa melepaskannya, Swift akan melempar kesalahan pada Anda.

Optional Binding

Ada cara yang lebih aman untuk mengakses nilai optional. Kita akan melihat lebih dekat pernyataan if dalam beberapa menit, namun contoh berikut menunjukkan bagaimana kita dapat dengan aman mengakses nilai yang tersimpan dalam variabel str, yaitu tipe optional String.

Pertama-tama kita periksa apakah variabel str sama dengan nil sebelum kita mencetak isinya. Dalam contoh ini, str tidak memiliki nilai, yang berarti tidak akan dipaksa terbongkar oleh kecelakaan.

Ada pendekatan yang lebih elegan yang disebut optional binding. Dalam contoh berikut, kami menetapkan nilai yang tersimpan dalam optional ke konstanta sementara, yang digunakan dalam pernyataan if. Nilai dari str optional terikat pada strConst konstan dan digunakan dalam if statement. Pendekatan ini juga bekerja untuk pernyataan while.

Apa itu nil ?

Jika Anda berasal dari Objective-C, maka Anda pasti tahu apa itu nil. Dalam Objective-C, nil adalah pointer ke objek yang tidak ada. Swift mendefinisikan nil sedikit berbeda dan penting bagi Anda untuk memahami perbedaannya.

Di Swift, nil berarti tidak adanya nilai, nilai apapun. Sedangkan nil hanya berlaku untuk objek di Objective-C, di Swift nil bisa digunakan untuk tipe apapun. Oleh karena itu penting untuk dipahami bahwa suatu optional tidak setara dengan nil di Objective-C. Konsep ini sangat berbeda.

2. Control Flow

Swift menawarkan sejumlah konstruksi umum untuk mengendalikan arus kode yang Anda tulis. Jika Anda memiliki pengalaman pemrograman, maka Anda tidak akan memiliki masalah untuk mempercepat konstruktor control flow Swift, pernyataan kondisional if dan switch, dan for dan while loop.

Namun, Swift tidak akan menjadi Swift jika control flownya tidak sedikit berbeda, misalnya, alur control flow Objective-C. Meskipun rinciannya penting, saya yakin mereka tidak akan menghalangi Anda bangkit dari Swift. Mari kita mulai dengan konstruk kondisional yang paling umum, pernyataan if.

if

Pernyataan if di Swift sangat mirip dengan yang ditemukan di Objective-C. Perbedaan utamanya adalah tidak perlu membungkus kondisi dalam tanda kurung. Kurung kurawal, bagaimanapun, adalah wajib. Yang terakhir ini mencegah pengembang untuk mengenalkan bug umum yang terkait dengan penulisan pernyataan if tanpa kurung kurawal. seperti inilah peryataan if di Swift.

Tidak mengherankan jika Swift juga mendefinisikan else. Kode di klausul else dijalankan jika kondisinya sama dengan false. Ini juga memungkinkan untuk rantai pernyataan if seperti yang ditunjukkan pada contoh berikut.

Ada satu catatan penting yang harus dibuat, yaitu kondisi sebuah pernyataan if perlu mengembalikan nilai true atau false. Ini pernyataan if yang tidak benar di Objective-C. Lihatlah pernyataan if berikut di Objective-C.

Jika kami memetakan potongan kode di atas ke Swift, kita akan mengalami kesalahan. Kesalahannya tidak terlalu informatif, tapi Swift memberi tahu kita bahwa kita perlu memastikan hasil dari kondisi tersebut untuk mengevaluasi true atau false.

Cara yang benar untuk menerjemahkan potongan Objective-C di atas ke Swift adalah dengan memastikan kondisi pernyataan if dievaluasi true atau false, seperti pada cuplikan berikut.

switch

Pernyataan switch di Swift lebih kuat daripada padanan Objective-C-nya. Ini juga lebih aman karena Anda akan belajar dalam sekejap. Meskipun ada beberapa perbedaan, pernyataan switch di Swift mematuhi konsep yang sama seperti bahasa pemrograman lainnya, sebuah nilai dilewatkan ke pernyataan switch dan dibandingkan terhadap kemungkinan pola pencocokan.

Itu benar, pola. Seperti yang saya katakan, sebuah pernyataan switch di Swift memiliki beberapa trik. Kita akan melihat trik-trik itu dalam sekejap. Mari kita bicara tentang keamanan dulu.

Exhaustive

Pernyataan switch di Swift perlu exhaustive, artinya setiap nilai yang mungkin dari tipe yang diserahkan ke pernyataan switch perlu ditangani oleh pernyataan switch. Seperti pada Objective-C, ini mudah dipecahkan dengan menambahkan case default seperti pada contoh berikut.

Gagal

Perbedaan penting dengan implementasi obyektif-C dari pernyataan switch adalah kurangnya terobosan implisit. Contoh berikut tidak bekerja di Swift karena beberapa alasan.

Kasus pertama di mana a dibandingkan terhadap 0 tidak secara implisit jatuh ke kasus kedua di mana dibandingkan a terhadap 1. Jika Anda menambahkan contoh di atas ke playground Anda, Anda akan melihat bahwa Swift menunjukkan kesalahan pada Anda. Kesalahan mengatakan bahwa setiap kasus perlu menyertakan setidaknya satu pernyataan yang dapat dieksekusi.

Perhatikan bahwa kasus pernyataan switch tidak menyertakan pernyataan break untuk keluar dari pernyataan switch. Ini tidak diperlukan di Swift karena implikasi implisit tidak ada di Swift. Ini akan menghilangkan berbagai bug umum yang disebabkan oleh penggabungan yang tidak disengaja.

Pattern

Kekuatan pernyataan switch di Swift terletak pada pencocokan pola. Lihatlah contoh berikut yang telah saya gunakan untuk membandingkan nilai yang dipertimbangkan.

Operator ..<  atau operator setengah terbuka menentukan kisaran dari nilai pertama ke nilai kedua, tidak termasuk nilai kedua. Operator ... atau operator rentang tertutup mendefinisikan kisaran dari nilai pertama ke nilai kedua, termasuk nilai kedua. Operator ini sangat berguna dalam berbagai situasi.

Anda juga dapat membandingkan nilai yang dianggap dari pernyataan switch ke tuple. Lihatlah contoh berikut untuk melihat bagaimana ini bekerja.

Seperti yang dapat Anda lihat pada contoh di atas, ada kemungkinan nilai tersebut cocok dengan lebih dari satu kasus. Bila ini terjadi, kasus pencocokan pertama dipilih. Contoh di atas juga menggambarkan penggunaan underscore. Seperti yang kita lihat di artikel sebelumnya, kita bisa menggunakan garis bawah, _, untuk memberi tahu Swift nilai mana yang tidak kita minati.

Value Binding

Pengikatan nilai juga dimungkinkan dengan pernyataan switch seperti ditunjukkan oleh contoh berikut. Nilai kedua tupel untuk sementara terikat pada description konstan untuk digunakan pada kasus pertama dan kedua.

for

for loop adalah konstruktor loop pertama yang akan kita lihat. Ini berperilaku sangat mirip dengan for loop dalam bahasa lain. Ada dua model, for loop dan for-in loop.

for

Swift's for loop hampir identik dengan for loop di Objective-C seperti contoh berikut. for loop mengeksekusi sejumlah pernyataan sampai kondisi yang telah ditentukan terpenuhi.

Seperti halnya pernyataan if, tidak perlu menggunakan tanda kurung untuk menyertakan inisialisasi, kondisi, dan definisi kenaikan loop. Pernyataan loop, bagaimanapun, memang perlu ditutupi oleh kurung kurawal.

for-in

for-in loop ideal untuk perulangan di atas isi kisaran atau collection. Dalam contoh berikut, kita mengulang elemen dari sebuah array.

Kita juga bisa menggunakan for-in loop untuk melompati pasangan kunci-nilai kamus. Dalam contoh berikut, kami mendeklarasikan sebuah dictionary dan mencetak isinya ke konsol. Seperti yang kita lihat di awal seri ini, urutan pasangan kunci-nilai tidak terdefinisi karena dictionary adalah kumpulan pasangan nilai kunci yang tidak berurutan.

Setiap pasangan nilai kunci dari kamus tersedia dalam for-in loop sebagai tupel konstanta yang dinamai. for-in loop juga sangat bagus dalam kombinasi dengan rentang. Saya yakin Anda setuju bahwa cuplikan di bawah ini mudah dibaca dan dimengerti berkat penggunaan jarak tertutup.

while

while loop juga hadir dalam dua variasi, while dan do-while. Perbedaan utamanya adalah bahwa himpunan pernyataan dari do-while loop selalu dijalankan setidaknya satu kali, karena kondisi  dievaluasi pada akhir setiap iterasi. Contoh berikut menggambarkan perbedaan ini.

Pernyataan println dari while loop tidak pernah dijalankan saat loop do-while dieksekusi sekali.

Dalam banyak kasus, for loop dapat ditulis ulang sebagai while loop dan seringkali sampai pengembang menentukan jenis loop yang akan digunakan dalam situasi tertentu. Berikut ini for dan while loop menghasilkan output yang sama.

Pelajari Lebih Lanjut di Kursus Pemrograman Swift Kami

Jika Anda tertarik untuk mengikuti pendidikan Swift Anda ke tingkat berikutnya, Anda dapat melihat kursus lengkap kami tentang pengembangan Swift.

Kesimpulan

Ada lebih banyak lagi untuk control flow di Swift daripada yang telah kita bahas dalam artikel ini, tapi sekarang Anda memiliki pemahaman dasar untuk melanjutkan perjalanan Anda ke Swift. Semoga tutorial ini menunjukkan kepada Anda bahwa implementasi control flow Swift sangat mirip dengan bahasa pemrograman lainnya, dengan twist.

Di sisa rangkaian ini, kita akan memanfaatkan struktur control flow Swift dan Anda secara bertahap akan mendapatkan pemahaman yang lebih baik tentang perbedaan halus dengan bahasa seperti Objective-C. Dalam angsuran berikutnya dari seri ini, kita mulai menjajaki fungsi.

Advertisement
Advertisement
Advertisement
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.