Tulis Swift dengan cara Pythonic

Meskipun Python terus memimpin kemajuan dalam Pembelajaran Mesin dan Ilmu Data, Swift juga berkembang pesat. Proyek Google “Swift For Tensorflow” yang banyak dibicarakan adalah indikator yang jelas tentang bagaimana interoperabilitas Python dengan Swift akan memainkan peran yang lebih besar di bidang Kecerdasan Buatan.

Apapun itu, saya tidak akan menggali lebih jauh tentang “PythonKit” dan sebagai gantinya saya akan menunjukkan kepada Anda beberapa trik Python keren yang dapat Anda terapkan dalam basis kode Swift Anda. Sekarang, Anda bisa menjadi pengembang iOS yang ingin mulai menggunakan Python atau bisa juga sebaliknya.

Dalam kedua kasus tersebut, cara berikut hanya akan menunjukkan kepada Anda bagaimana meskipun memiliki perbedaan yang kontras, bahasa Swift dan Python memiliki beberapa kesamaan yang unik. Sangat mudah untuk menulis kode Swift dengan cara Pythonic.

Mengimpor Submodul

Python memiliki beberapa cara berbeda dalam menulis pernyataan penting. Melakukan import abc mencari abc di sys.modules dan jika tidak tersedia, Python akan melanjutkan pencarian melalui daftar modul bawaan yang sudah diinstal sebelumnya.

Sintaks lain untuk mengimpor modul atau submodul ketika itu milik paket lain: from xyz import abc.

Meskipun menggunakan pernyataan import sederhana adalah cara yang paling dikenal dalam menggunakan kerangka kerja di basis kode Swift Anda, Anda juga dapat mengimpor submodul atau kelas atau struct serupa dengan apa yang kami lakukan dengan Python. Pernyataan impor Swift mendukung sintaks berikut:

//Swift
import [module] 
import [module].[submodule] 
import [import kind] [module].[symbol name]

Berikut ini contoh submodul impor di Swift:

import UIKit.UITableViewController  
let tableVC = UITableViewController() 
let vc = UIViewController() //works
//or
import class UIKit.UITableViewController  
let tableVC = UITableViewController() 
let vc = UIViewController() //error

Perhatikan, pernyataan import kedua akan menimbulkan kesalahan saat menggunakan UIViewController. Ini karena kita hanya mengimpor kelas dengan nama simbol UITableViewController.

Hal menarik lainnya di Swift adalah Anda tidak dapat mengganti nama sumber daya yang diimpor seperti yang Anda lakukan dengan Python: import abc as a. Sebagai solusinya, Anda dapat menggunakan typealias setelah pernyataan import di Swift.

Menggunakan bukan operator

Python memberi kita operator not untuk meniadakan boolean yang analog dengan simbol komplemen(!) dalam Swift dan bahasa lainnya. Bagi sebagian dari kita, operator not tampaknya lebih mudah dibaca.

Untungnya, di Swift, di mana fungsi adalah warga kelas satu, Anda dapat mengubah ! menjadi fungsi agar tampak seperti operator Python not. Berikut cuplikan Swift yang menunjukkan cara melakukannya.

let not = (!)
let isUserValid = false
if not(isUserValid) {
  print("User is valid.")
}

Destrukturisasi

Destrukturisasi memungkinkan kita untuk menetapkan lebih dari satu variabel sekaligus dalam satu baris. Ini biasanya digunakan dalam Python seperti yang ditunjukkan di bawah ini:

#Python
x, y = (5, 11)
a, b = b, a
a,b = b, a + b

Melakukan hal yang sama di Swift tidak sering terlihat di basis kode. Namun demikian, ini sangat berguna untuk memisahkan tupel menjadi beberapa nilai. Atau bahkan menukar variabel seperti Python. Cuplikan Swift berikut menunjukkan beberapa contoh destrukturisasi:

//Swift
func getUserDetails() -> (name: String, password: String) {
    return ("Swift", "beta5.3")
}
let (username, password) = getUserDetails()
var a = 10
var b = 20
(a, b) = (b, a)

Potongan kode terakhir yang melakukan pertukaran di tempat jauh lebih mudah untuk dipahami dibandingkan melakukannya dengan variabel ketiga di Swift. Perlu diperhatikan, bahwa tidak seperti sintaksis Python, penggunaan tanda kurung dalam destrukturisasi Swift adalah wajib.

Kesimpulan

Kami melihat cara mereplikasi beberapa sintaksis Python yang paling umum di Swift. Saya harap ini menginspirasi Anda dan membuat transisi Anda dalam kedua bahasa tersebut lancar ketika saatnya untuk interoperabilitas tiba.

Itu saja untuk yang satu ini. Terima kasih sudah membaca.