๐ก์ ๊ทผ์ ์ด์ ํ์์ฑ
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์์์ ์ค์ํ ์บก์ํ์ ์๋ํ๋ฅผ ๊ตฌํํ๋ ์ด์ ๋ ์๋ถ์์ ๋ณด๊ฑฐ๋ ์ ๊ทผํ๋ฉด ์ ๋๋ ์ฝ๋๊ฐ ์๊ธฐ ๋๋ฌธ์ด๋ค.
์ ๊ทผ์ ์ด๋ฅผ ํตํด ๊ผญ ํ์ํ ๋ถ๋ถ๋ง ์ ๊ณตํ ์ ์๋ค.
๐ก์ฝ๊ธฐ ์ ์ฉ ๊ตฌํ
์ค์ ์๋ง ๋ ๋ฎ์ ์์ค์ ๊ฐ๋๋ก ์ ํํ ์ ์๋ค.
์์์ ์ ๊ทผ์์ค ํค์๋ ๋ค์ ์ ๊ทผ์์ค(set)์ฒ๋ผ ํํํ๋ฉด ์ค์ ์์ ์ ๊ทผ์์ค๋ง ๋ ๋ฎ๋๋ก ์ง์ ํด์ค ์ ์๋ค.
์ค์ ์์ ์ ๊ทผ์์ค ์ ํ์ ํ๋กํผํฐ, ์๋ธ์คํฌ๋ฆฝํธ, ๋ณ์ ๋ฑ์ ์ ์ฉ๋ ์ ์์ผ๋ฉฐ, ํด๋น ์์์ ์ ๊ทผ์์ค๋ณด๋ค ๊ฐ๊ฑฐ๋ ๋ฎ์ ์์ค์ผ๋ก ์ ํํด์ฃผ์ด์ผํ๋ค.
public struct SomeType{
// ๋น๊ณต๊ฐ ์ ๊ทผ ์์ค ์ ์ฅ ํ๋กํผํฐ count
private var count: Int = 0
// ๊ณต๊ฐ ์ ๊ทผ ์์ค ์ ์ฅ ํ๋กํผํฐ publicStoredProperty
public var publicStoredProperty: Int = 0
// ๊ณต๊ฐ ์ ๊ทผ ์์ค ์ ์ฅ ํ๋กํผํฐ publicGetOnlyStoredProperty
// ์ค์ ์๋ ๋น๊ณต๊ฐ ์ ๊ทผ ์์ค
public private(set) var publicGetOnlyStoredProperty: Int = 0
// ๋ด๋ถ ์ ๊ทผ ์์ค ์ ์ฅ ํ๋กํผํฐ internalComputedProperty
internal var internalComputedProperty: Int{
get{
return count
}
set{
count += 1
}
}
// ๋ด๋ถ ์ ๊ทผ ์์ค ์ ์ฅ ํ๋กํผํฐ internalGetOnlyComputedProperty
// ์ค์ ์๋ ๋น๊ณต๊ฐ ์ ๊ทผ ์์ค
internal private(set) var internalGetOnlyComputedProperty: Int{
get{
return count
}
set{
count += 1
}
}
// ๊ณต๊ฐ ์ ๊ทผ ์์ค ์๋ธ ์คํฌ๋ฆฝํธ
public subscript() -> Int {
get{
return count
}
set{
count += 1
}
}
// ๊ณต๊ฐ ์ ๊ทผ ์์ค ์๋ธ ์คํฌ๋ฆฝํธ
// ์ค์ ์๋ ๋ด๋ถ ์ ๊ทผ ์์ค
public internal(set) subscript(some: Int) -> Int{
get{
return count
}
set{
count += 1
}
}
}
var someInstance: SomeType = SomeType()
// ์ธ๋ถ์์ ์ ๊ทผ์, ์ค์ ์ ๋ชจ๋ ์ฌ์ฉ ๊ฐ๋ฅ
print(someInstance.publicStoredProperty) // 0
someInstance.publicStoredProperty = 100
// ์ธ๋ถ์์ ์ ๊ทผ์๋ง ์ฌ์ฉ๊ฐ๋ฅ
print(someInstance.publicGetOnlyStoredProperty) // 0
//someInstance.publicGetOnlyStoredProperty = 100 // ์ค๋ฅ๋ฐ์
// ์ธ๋ถ์์ ์ ๊ทผ์, ์ค์ ์ ๋ชจ๋ ์ฌ์ฉ ๊ฐ๋ฅ
print(someInstance.internalComputedProperty) // 0
someInstance.internalComputedProperty = 100
// ์ธ๋ถ์์ ์ ๊ทผ์๋ง ์ฌ์ฉ ๊ฐ๋ฅ
print(someInstance.internalGetOnlyComputedProperty) // 1
// someInstance.internalGetOnlyComputedProperty = 100 // ์ค๋ฅ ๋ฐ์
// ์ธ๋ถ์์ ์ ๊ทผ์, ์ค์ ์ ๋ชจ๋ ์ฌ์ฉ ๊ฐ๋ฅ
print(someInstance[]) // 1
someInstance[] = 100
// ์ธ๋ถ์์ ์ ๊ทผ์๋ง, ๊ฐ์ ๋ชจ๋ ๋ด์์๋ ์ค์ ์๋ ์ฌ์ฉ ๊ฐ๋ฅ
print(someInstance[0]) // 2
someInstance[0] = 100
Reference
Swift ์ค์ํํธ ํ๋ก๊ทธ๋๋ฐ - ์ผ๊ณฐ
'Swift' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Swift] ์ต์ ๋ ์ฒด์ด๋๊ณผ ๋น ๋ฅธ ์ข ๋ฃ (guard, assert) (0) | 2022.03.20 |
---|---|
[Swift] ํด๋ก์ : Closure (0) | 2022.03.20 |
[Swift] ํจ์๋ฅผ ์ฌ์ฉํ ํ๋กํผํฐ ๊ธฐ๋ณธ๊ฐ ์ค์ (0) | 2022.03.19 |
[Swift] self ํ๋กํผํฐ (feat. mutating, ํ์ ๋ฉ์๋) (0) | 2022.03.19 |
[Swift] ์ฐ์ฐ ํ๋กํผํฐ๋ก ๊ฐ๋ ์ฑ ๋์ด๊ธฐ! (0) | 2022.03.19 |