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

Pengantar Swift: Bagian 1

by
Difficulty:BeginnerLength:LongLanguages:

Indonesian (Bahasa Indonesia) translation by Yusuf Samin (you can also view the original English article)

Di WWDC 2014, Apple telah memperkenalkan salah satu pembaruan terbesar untuk iOS sejak 2008 dari sudut pandang pengembang. Mereka memperkenalkan HomeKit, HealthKit, CloudKit, dan Extensions, hanya untuk beberapa nama. Tapi kejutan terbesar dari WWDC 2014 adalah pengenalan bahasa pemrograman baru, Swift.

Swift adalah bahasa pemrograman yang luar biasa yang telah dibangun dari bawah ke atas agar efisien dan aman. Ia menggunakan API yang sama dengan yang dilakukan Objective-C. Atau, apa yang bisa Anda lakukan di Objective-C, Anda bisa lakukan di Swift. Ini juga memperkenalkan beberapa konsep baru yang akan dihargai oleh programmer lama dan beberapa di antaranya akan saya bahas dalam seri pengantar Swift ini.

Dalam seri ini, saya akan menganggap Anda sudah terbiasa dengan Objective-C. Dalam artikel pertama dari seri ini, saya berbicara tentang filosofi, struktur file, dan sintaksis Swift. Pada artikel kedua, saya memperbesar aspek sintaksis Swift yang lebih canggih, seperti opsional dan manajemen memori. Berpegang pada topi Anda, kawan, itu akan menjadi doozy.

1. Filosofi

Untuk lebih memahami Swift, Apple telah mengkondisikan kami dengan perbaikan struktural di Objective-C selama beberapa tahun terakhir. Perbaikan Objective-C seperti code block, array literal dan definisi dictionary, dan ARC (Automatic Reference Counting) hanyalah beberapa hal yang ditambahkan Apple ke Objective-C yang memudahkan transisi ke Swift.

Salah satu pilar penting filosofi Swift adalah inisialisasi kode. Semua objek dan variabel ketika didefinisikan dalam Swift harus diinisialisasi dalam kode. Objek atau variabel yang tidak diinisialisasi akan menghasilkan kesalahan waktu kompilasi di Swift. Ini memastikan suatu objek atau variabel selalu memiliki nilai. Ada satu kasus khusus di Swift ketika nilai awal tidak dapat ditentukan. Dalam kasus khusus ini, variabel Anda disebut optional. Kami akan membahas opsional di bagian kedua dari seri ini.

Pilar penting lainnya adalah kelengkapan cabang. Semua cabang kondisional, baik itu if atau switch/case , harus mencakup semua kondisi. Dengan cara ini, tidak ada kode yang dapat jatuh tanpa dicakup. Pengkondisian yang hilang dalam pernyataan cabang Anda akan ditangkap dan menghasilkan kesalahan waktu kompilasi.

Satu elemen terakhir dari filosofi Swift adalah preferensinya terhadap konstanta daripada variabel. Swift mendefinisikan variabel dan konstanta dengan cara berikut:

Pada contoh di atas, kata kunci let digunakan untuk mendefinisikan konstanta sementara kata kunci var mendefinisikan variabel. Dengan membuat definisi konstanta ini menjadi mudah, Apple mendorong penggunaan konstanta kapan pun memungkinkan. Ini mengarah ke kode yang lebih aman di lingkungan multithreaded dan optimisasi kode yang lebih baik karena kompiler tahu nilai konstanta tidak akan berubah.

Sekarang, ada lebih banyak ke Swift daripada beberapa sintaks dan peningkatan format. Swift dibangun dari bawah ke atas untuk memperbaiki banyak C/C++ yang umum, dan pada dasarnya Objective-C, sumber kehancuran. Masalah-masalah seperti:

  • Index out-of-bound dalam array
  • data yang tidak diinisialisasi
  • jenis pengembalian tidak dicek
  • akses pointer tidak dicek
  • jatuh implisit 
  • kesalahan goto

Sebagai seseorang yang memprogram untuk iOS dan Android, saya tahu secara langsung betapa jauh lebih menyenangkannya coding untuk platform iOS dengan Cocoa dan UIKit. Seri ini akan menunjukkan kepada Anda betapa lebih menyenangkannya pengkodean dengan menambahkan Swift ke dalam campuran.

2. Struktur File

Di Objective-C, kami memiliki file header (.h) dan file implementasi (.m). Ini adalah sesuatu Objective-C yang diwarisi dari bahasa C.

Di Swift, kelas didefinisikan dalam file implementasi tunggal (.swift) yang mencakup semua definisi dan implementasi kelas. Ini mengingatkan pada bahasa lain seperti Java dan C#.

Lewatlah sudah kebutuhan untuk juggling file header dan menambahkan #IFNDEF sial di bagian atas file header.

3. Sintaks

Hal pertama yang akan Anda perhatikan tentang Swift adalah hilangnya titik koma di akhir setiap pernyataan. Di Swift, setiap baris dianggap sebagai pernyataan dan kami tidak perlu menambahkan tanda titik koma di akhir setiap baris.

Saya menekankan harus, karena tidak ada yang menghentikan Anda untuk menambahkan titik koma di akhir pernyataan Anda. Saya akan terus menambahkan titik koma di akhir setiap pernyataan karena saya pikir itu meningkatkan keterbacaan. Selain itu, sangat sulit untuk menghilangkan kebiasaan menambahkan titik koma seperti yang telah dilakukan pengembang Cocoa selama bertahun-tahun.

Perubahan penting lainnya dalam Swift adalah bahwa kurung kurawal wajib untuk pernyataan if. Itu berarti tidak ada lagi bug Heartbleed.

Sintaks bisa menjadi subjek yang kompleks untuk ditulis. Swift memiliki banyak seluk-beluk yang bisa memakan waktu sangat lama, tetapi itu bukan tujuan dari artikel ini. Untuk singkatnya, saya akan berkonsentrasi pada perubahan apa yang akan dilihat oleh pengembang Objective-C.

4. Kemiripan dengan Objective-C

Saya akan mulai dengan menunjukkan kepada Anda tiga cuplikan kode yang menggambarkan beberapa kesamaan dengan Objective-C. Ini akan membantu Anda dalam pemahaman Anda tentang bahasa Swift.

Pemrogram Objective-C akan menemukan bahwa Swift memiliki cabang yang sama dan pernyataan iterasi yang sudah Anda kenal, seperti if/elsefor loop, for..in loop, dan pernyataan switch.

Swift mencakup dua operator rentang, ..< dan ..., untuk menentukan rentang nilai  Dalam for loop di atas, kami menggunakan half-closed range operator, ..<, untuk menentukan rentang nilai yang mencakup 1, 2, 3, dan 4, tetapi tidak termasuk 5. Operator jangkauan lainnya adalah closed range operator, .... Ini menentukan rentang nilai yang mencakup nilai di kedua closed range operator. Sebagai contoh, 1...5. menentukan rentang nilai dari 1 hingga 5, termasuk 5.

5. Mendefinisikan Variabel dan Konstanta

Mari kita kembali contoh yang saya tunjukkan sebelumnya.

Di Swift, kami mendefinisikan konstanta menggunakan kata kunci let dan variabel menggunakan kata kunci var. Tanda titik dua :, adalah penanda untuk mendefinisikan tipe. Dalam contoh di atas, kami membuat konstanta dan variabel tipe String.

Kami juga menginisialisasi konstanta dan variabel dengan string. Di Swift, string didefinisikan seperti string C di Objective-C, mereka tidak diawali dengan simbol @.

Objective-C adalah bahasa yang strongly typed, yang berarti bahwa jenis variabel atau parameter harus selalu ditentukan. Swift juga bahasa yang strongly typed, tetapi Swift sedikit lebih pintar karena kompiler akan menyimpulkan tipe variabel. Kompiler juga memastikan bahwa tidak ada casting variabel yang salah terjadi tanpa sepengetahuan dan intervensi Anda.

Jika kita menulis ulang contoh di atas dengan membiarkan tipe inferensi bekerja, maka snippet kode akan terlihat sebagai berikut:

Ini jauh lebih baik dan kodenya jauh lebih bersih. Kompiler cukup pintar untuk memahami bahwa someInt adalah Int dan someFloat adalah Double.

6. String

Salah satu cara untuk mendapatkan gagasan tentang kekuatan suatu bahasa adalah dengan mengeksplorasi bagaimana ia menangani manipulasi string. Objective-C memiliki banyak fungsi dan fitur yang memungkinkan kami menangani string, lebih baik daripada kebanyakan bahasa, tetapi mereka cenderung bertele-tele dan membingungkan dari waktu ke waktu.

Mari kita mulai dengan contoh Objective-C. Untuk menggabungkan dua string dalam Objective-C, kami melakukan hal berikut:

Di Swift, untuk menambahkan string ke string lain, kami menggunakan operator +. Sesederhana itu.

String di Swift adalah Unicode, yang berarti kita dapat menulis:

Kita dapat mengulang karakter string menggunakan pernyataan for..in seperti yang ditunjukkan pada contoh berikut. Kita bisa menggunakan loop for..in untuk mengulangi string Unicode juga. Sangat keren.

Satu hal terakhir yang ingin saya bahas tentang string sebelum melanjutkan adalah interpolasi string. Di Objective-C, jika kita ingin menampilkan string dengan variabel, kita memanggil [NSString stringWithFormat:]. Di Swift, variabel bisa disematkan. Lihatlah contoh berikut.

Untuk menggunakan interpolasi string, Anda membungkus variabel atau panggilan fungsi dalam tanda kurung dan meletakkan garis bakslash di depannya, \(ekspresi).

7. Array & Dictionary

ArrayDictionary

Sebagai seorang programmer Objective-C, Anda sudah terbiasa dengan array dan dictionary. Swift juga memiliki kelas koleksi dan menambahkan beberapa fitur tambahan untuk mereka.

Bagaimana Anda menggunakan koleksi di Swift? Di Swift, mereka disebut Array dan Dictionary. Mendeklarasikan array di Swift mirip dengan mendeklarasikan array literal di Objective-C, menggunakan seperangkat tanda kurung siku, [], tetapi tanpa simbol @ sebelumnya.

Sama berlaku untuk dictionary. Namun, alih-alih menggunakan kurung kurawal, Anda menggunakan kurung siku.

Mutabilitas

Jika objek Array setara dengan objek NSArray dan objek Dictionary setara dengan objek NSDictionary, maka bagaimana kita membuat array dan kamus yang bisa berubah di Swift?

Jawabannya sangat sederhana, mendeklarasikan objek sebagai variabel. Dengan kata lain, dalam contoh sebelumnya someArray adalah setara dengan instance NSArray dan someOtherArray sebagai instance dari NSMutableArray. Ini juga berlaku untuk dictionary. Dalam contoh sebelumnya, someDictionary adalah setara dengan instance NSDictionary dan someOtherDictionary dari instance NSMutableDictionary. Itu cerdik, bukan?

Sementara array dan dictionary Objective-C hanya dapat berisi objek, di Swift, koleksi dapat berisi objek serta tipe data primitif, seperti integer dan float. Perbedaan penting lainnya dengan Objective-C adalah bahwa koleksi di Swift diketik, secara eksplisit atau melalui inferensi tipe pada waktu kompilasi. Dengan menentukan jenis objek dalam koleksi, Swift menambahkan keamanan ekstra untuk koleksi ini.

Meskipun kita bisa menghilangkan tipe variabel ketika mendeklarasikannya, itu tidak mengubah fakta bahwa kompiler akan menetapkan tipe ke objek dalam koleksi. Menggunakan inferensi tipe membantu menjaga kode tetap terbaca dan ringan.

Kita dapat mendeklarasikan ulang objek Array dan Dictionary yang telah kita nyatakan sebelumnya sebagai berikut:

Kompiler akan memeriksa koleksi selama inisialisasi dan menyimpulkan jenis yang benar. Dengan kata lain, ia memahami bahwa someArray dan someOtherArray adalah kumpulan objek String dan someDictionary dan someOtherDictionary adalah Dictionary dengan kunci tipe String dan nilai-nilai tipe Int.

Manipulasi Koleksi

Menambahkan objek atau array lain ke array sangat mirip dengan rangkaian string yang juga kita gunakan operator +.

Memanipulasi Dictionary sama mudahnya.

Koleksi Typed

Sebelumnya, saya menyebutkan bahwa koleksi di Swift typed, tetapi apa artinya itu? Jika kami mendefinisikan koleksi yang berisi objek String, Anda hanya bisa menambahkan objek String ke koleksi itu. Gagal melakukannya akan menghasilkan kesalahan.

Mari kita lihat contoh untuk memperjelas ini. Kami mendefinisikan koleksi objek Car. Snippet kode berikut menunjukkan definisi kelas Car dan cars array yang bisa berubah, yang berisi tiga instance Car.

Di belakang layar, kompiler akan menyimpulkan tipe array. Jika kami ingin menambahkan instance Car baru ke koleksi, kami cukup menggunakan operator + seperti yang ditunjukkan di bawah ini.

Namun, menambahkan objek dari tipe yang berbeda akan menghasilkan kesalahan.

Ini memiliki keuntungan tambahan dari keamanan tipe untuk mengambil objek dari koleksi. Ini juga menghilangkan kebutuhan untuk casting objek koleksi sebelum menggunakannya.

Dalam contoh kita, objek Car memiliki metode accelerate. Karena koleksi typed, kita dapat mengambil item dari array dan segera memanggil metode pada objek, dalam satu baris kode. Kami tidak perlu khawatir tentang jenis elemen karena koleksi hanya berisi objek Car.

Untuk mencapai hal yang sama di Objective-C dengan tingkat keamanan yang sama, kita perlu menulis yang berikut:

Akhirnya, untuk mengulangi array, kami menggunakan for..in loop:

Untuk mengulang dictionary, kami juga menggunakan for..in loop:

Seperti yang Anda lihat, koleksi yang diketik adalah fitur yang kuat dari bahasa Swift.

Kesimpulan

Kami telah belajar sedikit tentang bahasa Swift dan Anda harus meluangkan waktu untuk memahaminya. Saya sarankan Anda mengunduh Xcode 6 sesegera mungkin dan mulai menerapkan apa yang telah Anda pelajari dalam artikel ini di fitur Playground baru Xcode. Playground memungkinkan Anda bermain dengan Swift secara real time.

Itu saja untuk artikel ini. Dalam angsuran seri ini selanjutnya, kita akan melihat tuple, fungsi, closure, kelas, dan yang terakhir, optional. Anda juga akan mempelajari cara kerja manajemen memori di Swift. Nantikan.

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.