μ κ·Ό μ νμ
μ κ·Ό μ νμ
- μ κ·Ό μ νμλ λ€λ₯Έ μμ€ νμΌμ΄λ λͺ¨λμ μ½λμμ μ½λ μΌλΆμ λν μ κ·Όμ μ ννλ€.
- [μ μ½μ΄ μ μ] open < public < internal < fileprivate < private [μ μ½μ΄ λ§μ]
- open : λͺ¨λ μμ€ νμΌμμ ν΄λΉ level μ κ·Ό κ°λ₯ + λͺ¨λ κ³³μμ μλΈν΄λμ± κ°λ₯
- public : λͺ¨λ μμ€ νμΌμμ ν΄λΉ level μ κ·Ό κ°λ₯ + κ°μ λͺ¨λ λ΄μμλ§ μλΈν΄λμ± κ°λ₯
- internal : κ°μ λͺ¨λ λ΄μμλ§ μ κ·Ό κ°λ₯
- fileprivate : κ°μ μμ€νμΌ λ΄μμλ§ μ κ·Ό κ°λ₯
- private : ν΄λμ€ λ΄λΆμμλ§ μ κ·Ό κ°λ₯
- μ κ·Ό μ νμλ₯Ό μμ±νμ§ μμΌλ©΄ internalλ‘ νλ¨νλ€.
- μμ μμλ³΄λ€ νμ μμκ° λ λμ μ κ·Ό μμ€μ κ°μ§ μ μλ€.
private struct Car { // μμλ νμλ³΄λ€ κ°κ±°λ λμ μμ€μΌλ‘
public var model: String // π¨ μλ¬
}
- λͺ¨λκ³Ό μμ€νμΌ
- λͺ¨λ(module)
- λ°°ν¬ν μ½λμ λ¬Άμ λ¨μ
- νλμ νλ μμν¬/ λΌμ΄λΈλ¬λ¦¬/ μ΄ν리μΌμ΄μ μ΄ λͺ¨λ λ¨μκ° λ μ μλ€.
- import ν€μλλ₯Ό ν΅ν΄ λΆλ¬μ¬ μ μλ€.
- μμ€νμΌ
- νλμ swift μμ€ μ½λ νμΌμ μλ―Ένλ€.
- λͺ¨λ(module)
- public, open
- λ λ€ λͺ¨λ μΈλΆκΉμ§ μ κ·Όν μ μλ€.
- openμ ν΄λμ€μ ν΄λμ€ λ§΄λ²μμλ§ μ¬μ©ν μ μκ³ λ€λ₯Έ λͺ¨λμμ μλΈν΄λμ±μ΄ κ°λ₯νμ§λ§ publicμ κ·Έλ μ§ μμ΅λ€.
- openμΌλ‘ ν΄λμ€λ₯Ό κ°λ°© μ κ·Ό μμ€μΌλ‘ λͺ μνλ κ²μ κ·Έ ν΄λμ€λ₯Ό λ€λ₯Έ λͺ¨λμμλ μνΌν΄λμ€λ‘ μ¬μ©νκ² λ€λ μλ―Έλ‘ ν΄λΉ ν΄λμ€λ₯Ό μ€κ³νκ³ λ§λ€μλ€λ κ²μ μλ―Ένλ€(λ€λ₯Έ λͺ¨λμμ μμμ νμ©ν¨)
- publicμ μ£Όλ‘ νλ μμν¬μμ μΈλΆμ μ°κ²°λ μΈν°νμ΄μ€λ₯Ό ꡬννλλ° λ§μ΄ μ¬μ©νλ€.
- internal
- λͺ¨λ μμμ μ묡μ μΌλ‘ μ§μ νλ λν΄νΈ μ κ·Ό μ μ΄μμ΄λ€.
- μμ€ νμΌμ΄ μν΄μλ λͺ¨λ μ΄λμλ μ κ·Όν μ μμ§λ§ μΈλΆ λͺ¨λμμλ μ κ·Όν μ μλ€.
- fileprivate
- μμ€ νμΌ λ΄λΆμμλ§ μ κ·Όν μ μμ΅λλ€.
- μλ‘ λ€λ₯Έ ν΄λμ€κ° κ°μ νλμ μμ€ νμΌμ μ μλμ΄μκ³ fileprivateλ‘ μ μΈλμ΄ μλ€λ©΄ λ ν΄λμ€λ μλ‘ μ κ·Όν μ μλ€.
- private
- κ°μ₯ μ νμ μΈ μ κ·Όμ μ΄μμ΄λ€.
- fileprivateκ³Ό λ¬λ¦¬ κ°μ νμΌ μμ μμ΄λ μλ‘ λ€λ₯Έ ν΄λμ€μ΄κ³ privateλ‘ μ μΈλμ΄ μλ€λ©΄ λ μμλ μλ‘ μ κ·Όν μ μλ€.
// open
open class Vehicle {
open func startEngine() {
print("Engine started")
}
}
open class Car: Vehicle {
open var carType: String = "Sedan"
}
// public
public struct Point {
public var x: Int
public var y: Int
public init(x: Int, y: Int) {
self.x = x
self.y = y
}
public mutating func moveByX(_ deltaX: Int, y deltaY: Int) { //mutating : structλ enum μμ μλ νλ‘νΌν° κ°μ λ³κ²½ν λ
self.x += deltaX
self.y += deltaY
}
}
// internal
internal class InternalClass {
internal var internalProperty: Int = 10
internal func doSomethingInternally() {
print("Internal operation performed")
}
}
internal let internalConstant = 20
// fileprivate
class OuterClass {
fileprivate var outerVariable = 30
fileprivate func outerFunction() {
print("Outer function called")
}
fileprivate class InnerClass {
fileprivate func innerFunction() {
print("Inner function called")
}
}
}
// private
class MyClass {
private var privateVariable = 40
private func privateFunction() {
print("Private function called")
}
}
mutating
- Swiftμμ mutating ν€μλλ ꡬ쑰체(Structs)λ μ΄κ±°ν(Enum) λ΄μμ λ©μλ(Method)κ° ν΄λΉ ꡬ쑰체 λλ μ΄κ±°νμ μμ±μ μμ ν μ μλλ‘ νλ ν€μλ
- κΈ°λ³Έμ μΌλ‘ Swiftμμλ ꡬ쑰체λ μ΄κ±°νμ μΈμ€ν΄μ€κ° μμλ‘ μ μΈλλ©΄ ν΄λΉ μΈμ€ν΄μ€μ μμ±μ λ³κ²½ν μ μλ€.
- κ·Έλ¬λ λ©μλ λ΄μμ ν΄λΉ μΈμ€ν΄μ€μ μμ±μ λ³κ²½νλ €λ©΄
- mutating ν€μλλ₯Ό μ¬μ©νμ¬ ν΄λΉ λ©μλκ° ν΄λΉ μΈμ€ν΄μ€μ μμ±μ μμ ν μ μλλ‘ νμ©ν΄μΌ νλ€.
// ꡬ쑰체 μμ
struct Point {
var x = 0.0, y = 0.0
mutating func moveBy(x deltaX: Double, y deltaY: Double) {
x += deltaX
y += deltaY
}
}
var point = Point(x: 1.0, y: 1.0)
print("Before moving: x = \(point.x), y = \(point.y)")
point.moveBy(x: 2.0, y: 3.0)
print("After moving: x = \(point.x), y = \(point.y)")
// Before moving: x = 1.0, y = 1.0
// After moving: x = 3.0, y = 4.0
// μ΄κ±°ν μμ
enum TrafficLight {
case red, yellow, green
mutating func next() {
switch self {
case .red:
self = .green
case .yellow:
self = .red
case .green:
self = .yellow
}
}
}
var currentLight = TrafficLight.red
print("Current light is \(currentLight)")
currentLight.next()
print("Next light is \(currentLight)")
// Current light is red
// Next light is green
'π Today I Learned > Swift λ¬Έλ²' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Swift] κ³ μ°¨ν¨μ (map, filter, reduce) (0) | 2023.12.12 |
---|---|
[Swift] ν΄λ‘μ (0) | 2023.12.11 |
[Swift] νμ μΊμ€ν (0) | 2023.12.11 |
[Swift] νλ‘νΌν° μ΅μ λ² (0) | 2023.12.08 |
[Swift] μ΄κΈ°ν (0) | 2023.12.07 |