#30DaysOfSwift Day 27–28: Access Control and Advanced Operators

Hutomo Sakti Kartiko
2 min readFeb 22, 2024

--

Selamat datang di tantangan “30 Days Of Swift”! Pada hari 27 sampai dengan 28 akan berfokus pada Access Controll dan Advanced Operators yang terdapat pada bahasa pemrograman swift.

Access Control

Access Control adalah mekanisme yang digunakan untuk mengontrol akses ke bagian tertentu pada kode. Hal ini memungkinkan kita untuk menentukan bagian mana dari kode yang dapat diakses.

Public Access

Kode yang diberi akses publik dengan keyword public menandakan kode tersebut dapat diakses dari modul lain ataupun dari modul yang sama.

public class Car {
public var speed: Int = 0
public func start() {}
}

Internal Access

Kode yang diberi akses internal internal menandakan kode tersebut hanya dapat diakses dari dalam modul yang sama. Ini merupakan akses default dari sebuah kode jika level aksesnya tidak disertakan.

internal class Engine {
internal var horsepower: Int = 100
}

File-private Access

Akses ini ditandai dengan keyword fileprivate yang berarti, kode tersebut hanya bisa diakses dari file yang sama.

fileprivate class Garage {
fileprivate var cars: [Car] = []
}

Private Access

Terdapat akses private private yang berarti kode tersebut hanya dapat diakses dari dalam konteks yang sama, seperti class atau extensions.

class Vehicle {
private var fuelLevel: Int = 100
}

Advanced Operators

Advanced Operatos adalah operator khusus yang memungkinkan kita untuk melakukan operasi yang lebih kompleks.

Bitwise Operators

Operator bitwise &, |, ^, ~, <<, >> yang digunakan untuk melakukan operasi bit-by-bit pada nilai-nilai biner.

let a: UInt8 = 0b10101010
let b: UInt8 = 0b11001100
let result = a & b
print("Result \(result)")

Overloading Operators

Merupakan operator default yang kita kustom sesuai kebutuhan, untuk tipe data yang kita buat sendiri.

struct Vector2D {
var x: Double
var y: Double
}

func + (left: Vector2D, right: Vector2D) -> Vector2D {
return Vector2D(x: left.x + right.x, y: left.y + right.y)
}

let vector2D1 = Vector2D(x: 10, y: 20)
let vector2D2 = Vector2D(x: 20, y: 10)
let vector2D = vector2D1 + vector2D2
print("Vector2D \(vector2D)")

Custom Operators

Kita juga dapat membuat operator sendiri dengan menggunakan kata kunci prefix , infinix , postfix .

prefix operator √
prefix func √ (number: Double) -> Double {
return sqrt(number)
}
let resultCustom = √16
print("Result custom \(resultCustom)")

Kesimpulan

  • Dengan menggunakan level akses yang tepat, kita dapat mengontrol bagian-bagian mana saja dari kode yang dapat berinteraksi, serta membatasi akses ke properti dan metode yang mungkin tidak perlu. Sehingga kode menjadi lebih aman, mudah dibaca, dan tentunya mudah untuk di-maintenance.
  • Advanced operators dapat memberikan kita fleksibilias yang lebih besar dalam melakukan operasi-operasi tertentu.

Tantangan hari 27–28 selesai! Siap menantang tantangan berikutnya.

--

--