Section 7/71 menit

7. Ringkasan

7. Ringkasan

Hierarchy Lengkap Swift Access Control

swift
┌─────────────────────────────────────────────────────────────────────┐
 open           — subclassable dari luar module                      
├─────────────────────────────────────────────────────────────────────┤
 public         — accessible dari luar package                       
├─────────────────────────────────────────────────────────────────────┤
 package  NEW  — accessible semua module dalam satu Package.swift   
├─────────────────────────────────────────────────────────────────────┤
 internal       — accessible dalam satu module (DEFAULT)             
├─────────────────────────────────────────────────────────────────────┤
 fileprivate    — accessible dalam satu file                         
├─────────────────────────────────────────────────────────────────────┤
 private        — accessible dalam declaration + same-file extension 
└─────────────────────────────────────────────────────────────────────┘

Decision Guide

swift
Siapa yang perlu mengakses ini?
├── Hanya deklarasi saat ini  private
├── Hanya file saat ini  fileprivate
├── Hanya module saat ini  internal (default, tidak perlu tulis)
├── Semua module dalam Package.swift yang sama  package 
├── Pengguna library/SDK tapi tidak bisa di-subclass  public
└── Pengguna library/SDK dan bisa di-subclass  open

Kapan package vs Alternatif

Situasi Rekomendasi
Cross-module helper dalam satu SDK package
End-user facing API public / open
Test helper yang di-share antar test target package
Implementation detail satu module internal (default)
Single-module app internal (package tidak berguna)
Workaround untuk desain modul yang buruk Desain ulang modul-nya

Dibuat: 2026-05-08 | Swift 6.0 | Swift Package Manager