๐ก์ฐ์ฐ ํ๋กํผํฐ?
์ค์ ๊ฐ์ ์ ์ฅํ๋ ํ๋กํผํฐ๊ฐ ์๋๋ผ, ํน์ ์ํ์ ๋ฐ๋ฅธ ๊ฐ์ ์ฐ์ฐํ๋ ํ๋กํผํฐ
๋ฉ์๋๋ก ์ ๊ทผ์์ ์ค์ ์๋ฅผ ๊ตฌํํ๋๊ฒ์ ์ฐ์ฐ ํ๋กํผํฐ๋ฅผ ์ฌ์ฉํ๋ฉด ์ฝ๋์ ๊ฐ๋ ์ฑ์ ๋์ผ ์ ์๋ค!
๋ค๋ง, get ๋ฉ์๋๋ง ๊ตฌํํด๋ ๊ฒ์ฒ๋ผ ์ฝ๊ธฐ ์ ์ฉ ์ํ๋ก๋ ๊ตฌํํ๊ธฐ ์ฝ์ง๋ง, ์ฐ๊ธฐ ์ ์ฉ ์ํ๋ก๋ ๊ตฌํํ ์ ์๋ค๋ ๋จ์ ์ด ์๋ค.
์ฐ์ฐ ํ๋กํผํฐ ์ ์์ ์ฌ์ฉ
struct CoordinatePoint{
var x: Int // ์ ์ฅ ํ๋กํผํฐ
var y: Int // ์ ์ฅ ํ๋กํผํฐ
var oppositePoint: CoordinatePoint{ // ์ฐ์ฐ ํ๋กํผํฐ
// ์ ๊ทผ์
get {
return CoordinatePoint(x: -x, y: -y)
}
// ์ค์ ์
set(opposite){
x = -opposite.x
y = -opposite.y
}
}
}
var yejinPosition: CoordinatePoint = CoordinatePoint(x: 19, y: 20)
print(yejinPosition) // 10, 20
print(yejinPosition.oppositePoint) // -10, -20
// ๋์นญ์ขํ๋ฅผ (15, 20)์ผ๋ก ์ค์ ํด๋๋ฉด
yejinPosition.oppositePoint = CoordinatePoint(x:15, y: 25)
// ํ์ฌ ์ขํ๋ -15, -25๋ก ์ค์ ๋๋ค.
print(yejinPosition) // -15, -25
newValue๋ก ๋งค๊ฐ๋ณ์ ์ด๋ฆ์ ์๋ตํ ์ค์ ์
struct CoordinatePoint{
var x: Int // ์ ์ฅ ํ๋กํผํฐ
var y: Int // ์ ์ฅ ํ๋กํผํฐ
var oppositePoint: CoordinatePoint{ // ์ฐ์ฐ ํ๋กํผํฐ
// ์ ๊ทผ์
get {
// ์ด๊ณณ์์ return ํค์๋๋ฅผ ์๋ตํ ์ ์๋ค.
return CoordinatePoint(x: -x, y: -y)
}
// ์ค์ ์
set {
x = -newValue.x
y = -newValue.y
}
}
}
Reference
Swift ์ค์ํํธ ํ๋ก๊ทธ๋๋ฐ - ์ผ๊ณฐ
'Swift' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Swift] ํจ์๋ฅผ ์ฌ์ฉํ ํ๋กํผํฐ ๊ธฐ๋ณธ๊ฐ ์ค์ (0) | 2022.03.19 |
---|---|
[Swift] self ํ๋กํผํฐ (feat. mutating, ํ์ ๋ฉ์๋) (0) | 2022.03.19 |
[Swift] ๊ตฌ์กฐ์ฒด์ ํด๋์ค (0) | 2022.03.17 |
[Swift] ์ต์ ๋ : ์ต์ ๋ ์ถ์ถ (0) | 2022.03.17 |
[Swift] ํจ์ : ์ ์ถ๋ ฅ ๋งค๊ฐ๋ณ์ ํ์ฉ, ๋ฐ์ดํฐ ํ์ ์ผ๋ก์จ์ ํจ์, ์ค์ฒฉ ํจ์, @discardableResult (0) | 2022.03.16 |