๋ชฉ์ฐจ
๋ค์ด๊ฐ๊ธฐ ์ ์
์ฝ๋๋ฅผ ์ง๋ฌธํ๋ค๊ฐ ์ var๋ก ์ ์ธํ๋๋ ์ง๋ฌธ์ ๋ฐ์๋ค.
๋๋ ๊ฐ์ ๊ณ์ ๋ณ๊ฒฝํด์ฃผ๊ธฐ ๋๋ฌธ์ var๋ก ์์ฐ์ค๋ฝ๊ฒ ์ ์ธํ๋๋ฐ ๊ทธ๊ฒ ์๋์๋ค!!!!
๊ทธ๋์ ํท๊ฐ๋ฆฌ๋ val๊ณผ var์ ๋ํด ๋จ์ํ val์ ๋ณ๊ฒฝ ๋ถ๊ฐ, var์ ๋ณ๊ฒฝ ๊ฐ๋ฅ์ด๋ผ๊ณ ๋ง ์๋ ๊ฒ์ด ์๋๋ผ ์ ๋๋ก ์๊ธฐ์ํด์ ๊ณต๋ถํด๋ณด์๋ค.
val
- ์ด๊ธฐํ ํ ๊ฐ ๋ณ๊ฒฝ์ ๋ถ๊ฐ๋ฅ
- ๋ณ์์ ์ฐธ์กฐ๊ฐ ๊ฐ๋ฆฌํค๋ ๊ฐ์ฒด์ ๋ด๋ถ๊ฐ ๋ณ๊ฒฝ์ ๊ฐ๋ฅ
์ด๊ฒ ๋ฌด์จ ๋ง์ด์ผ??!
// โ ์ด๋ฏธ ๊ฐ์ ํ ๋นํ ๊ฒฝ์ฐ ๋ค์ ๊ฐ ํ ๋น ๋ถ๊ฐ, ์ฆ ๋ฑ์ ๋ฑํผ๋ค
val ddoung = "ddongpi"
ddoung = "no ddongpi"
// ๐โ๏ธ ๋ณ์์ ์ฐธ์กฐ๊ฐ ๊ฐ๋ฆฌํค๋ ๊ฐ์ฒด์ ๋ด๋ถ ๊ฐ์ ๋ณ๊ฒฝ ๊ฐ๋ฅ
val ddoung = arrayListOf("Bara")
ddoung.add("ddung")
/*
๋น์ฝ ๋ฐ์ดํฐ ์ ์ก์ ์ํ flow ๋ณ์
*/
private val _beaconData = MutableStateFlow<List<BeaconsData>>(
emptyList()
)
val beaconData : StateFlow<List<BeaconsData>> = _beaconData.asStateFlow()
์ฌ๊ธฐ์๋ ์ _beaconData๋ฅผ val๋ก ์ ์ธํด๋ ๋๋ ๊ฑธ๊น?
์ฐธ์กฐ์ ๋ถ๋ณ์ฑ
- val๋ก ์ ์ธ๋ ๋ณ์๋ ์ฐธ์กฐ๊ฐ ๋ณ๊ฒฝ๋ ์ ์์์ ์๋ฏธํ๋ค.
- ์ฆ __beaconData๋ ํญ์ ๋์ผํ MutableStateFlow ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํจ๋ค.
์ด ๊ทธ๋ฐ๋ฐ ๋๋ _beaconData์ ๊ฐ์ ๊ณ์ ์ ๋ฐ์ดํธํด์ฃผ์๋๋ฐ??
- MutableStateFlow๋ ๋ด๋ถ์ ์ผ๋ก ๋ณํ ์ ์๋(Mutable)ํ ์ํ๋ฅผ ๊ฐ์ง๊ณ ์์ด์ ๋ด์ฉ์ ๋ณ๊ฒฝํ ์ ์๋ค.
- MutableStateFlow์ ๋์ ๋ฐฉ์
- ๊ฐ์ ๋ณ๊ฒฝํ๊ธฐ ์ํ value ํ๋กํผํฐ๋ฅผ ์ ๊ณตํ๋ค.
- ์๋ก์ด ๊ฐ์ ์ค์ ํ ๋ ์ค์ ๋ก๋ ์๋ก์ด MutableStateFlow ๊ฐ์ฒด๋ฅผ ๋ง๋๋ ๊ฒ์ด ์๋๋ผ ๊ธฐ์กด ๊ฐ์ฒด์ ๋ด๋ถ ์ํ๋ฅผ ์ ๋ฐ์ดํธํ๋ ๊ฒ์ด๋ค.!!
์ฆ val๋ก ์ ์ธ ์ ์ฐธ์กฐ๊ฐ ๋ณ๊ฒฝ๋์ง ์๋๋ค. ์ฐธ์กฐํ๋ ๊ฐ์ฒด์ ๋ด์ฉ์ ์์ ํ ์ ์๋ค.
var
๊ทธ๋ ๋ค๋ฉด var์ ์ฐธ์กฐ๊ฐ ๋ณ๊ฒฝ๋ ์ ์๋ค.
// ๐โ๏ธ ๋ณ์์ ์ฐธ์กฐ๊ฐ ๊ฐ๋ฆฌํค๋ ๊ฐ์ฒด์ ๋ด๋ถ ๊ฐ์ ๋ณ๊ฒฝ ๊ฐ๋ฅ
val ddoung = arrayListOf("Bara")
ddoung.add("ddung")
// ๐โ๏ธ ์ด๋ฏธ ๊ฐ์ ํ ๋นํ ๊ฒฝ์ฐ ๋ค์ ๊ฐ ํ ๋น ๊ฐ๋ฅ, ์ฆ ๋ฑ์ ๋ฅํผ๊ฐ ์๋๋ค..
val ddoung = "ddongpi"
ddoung = "no ddongpi"
๐ฆ ๊ทธ๋ฌ๋ฉด
๋ฌธ์์ด์ด ์ด๋ป๊ฒ , ์ด๋์ ์ ์ฅ๋๋ ๊ฒ์ด๊ณ
ํ ๋น์ ์ด๋ป๊ฒ ์ผ์ด๋๋ ๊ฒ์ด๋ฉฐ,
ํ ๋น์ด ์ ํํ ๋ฌด์์ ์๋ฏธํ๋ ๊ฑธ๊น?
- ๋ฌธ์์ด ํ : JVM์์ ๋ฌธ์์ด์ ์ ์ฅํ๋๋ฐ ์ฌ์ฉ๋๋ ํน์ํ ๋ฉ๋ชจ๋ฆฌ ์์ญ
๋ง์ฝ ์ฝ๋์ "no ddongpi”์ ๊ฐ์ ๋ฌธ์์ด์ด ์ฌ์ฉ๋๋ฉด JVM์ ๋ฌธ์์ด ํ์ ๋์ผํ ๋ฌธ์์ด์ด ์ด๋ฏธ ์กด์ฌํ๋ ์ง ํ์ธํ๋ค.
๋ง์ฝ ์กด์ฌํ๋ ๊ฒฝ์ฐ → ๊ธฐ์กด ๋ฌธ์์ด์ ๋ํ ์ฐธ์กฐ๊ฐ ์ฌ์ฌ์ฉ๋จ
๋ง์ฝ ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ → JVM์ ๋ฌธ์์ด ํ์ ์ ๋ฌธ์์ด ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ์ด์ ๋ํ ์ฐธ์กฐ๋ฅผ ์ ์ฅํ๋ค.
์ด ๊ธฐ์ ์ ๋ฌธ์์ด ์ธํฐ๋์ด๋ผ๊ณ ํจ!
(์ ๊ธฐํ๋น...)
๋ค์ ์๊น ์์๋ก ๋์๊ฐ๋ฉด
val ddoung = "ddongpi"
ddoung = "no ddongpi"
์ฌ๊ธฐ์ val ddoung = "ddongpi" ๋ฅผ ํตํด ๋ฆฌํฐ๋ด ๋ฌธ์์ด ddongpi ๊ฐ ์์ฑ๋จ.
JVM์ ๋ฌธ์์ด ํ์ ๊ฒ์ฌํ์ฌ ddongpi ๊ฐ ์ด๋ฏธ ์กด์ฌํ๋์ง ํ์ธํ๋ค.
๋ง์ฝ ์๋ค๋ฉด “ddongpi" ๋ฅผ ๋ฌธ์์ด ํ์ ์ถ๊ฐํ๋ค.
๊ทธ๋ผ ์ด์ ddoung ๋ณ์๋ ddongpi ๋ฌธ์์ด์ ๋ํ ์ฐธ์กฐ๋ฅผ ๋ณด์ ํ๋ค.
์ฌํ ๋น ddoung = "no ddongpi" ์์๋ JVM์ ๋ฌธ์์ด ํ์ "no ddongpi" ๊ฐ ์ด๋ฏธ ์กด์ฌํ๋ ์ง ํ์ธํ๋ค.
์กด์ฌํ์ง ์์ ๊ฒฝ์ฐ ์์ฑ๋์ด ํ์ ์ ์ฅ๋๋ค.
ddoung ์ด ๋ณด์ ํ ์ฐธ์กฐ๊ฐ no ddongpi ๋ฅผ ๊ฐ๋ฆฌํค๋๋ก ๋ณ๊ฒฝ๋์ด์ ์ด์ ddoung ๋ ddongpi ์์ ๋ฒ์ด๋๊ฒ ๋๋ค.!!
๋น ๋ฐค ์์ฒญ๋๋ค..!
๊ทธ๋ฌ๋ฉด ํ ๋น์ ๋ญ ์๋ฏธํ๋?
- ์ฐธ์กฐ
- ddoung์ ๋ฌธ์์ด ํ์ ๋ฌธ์์ด ๊ฐ์ฒด์ ๋ํ ์ฐธ์กฐ๋ฅผ ๋ณด์
- ๋ฌธ์์ด ์์ฒด๋ฅผ ๋ณด์ ํ์ง ์๊ณ ํด๋น ๋ฌธ์์ด์ ๋ฉ๋ชจ๋ฆฌ ์์น์ ๋ํ ํฌ์ธํฐ๋ง ๋ณด์ (์ฃผ์)
- ๋ณ์ ์ฌํ ๋น
- ๋ณ์๋ฅผ ์ฌํ ๋นํ๋ฉด(ddoung = "no ddongpi") ์ฐธ์กฐ๊ฐ ์ ๋ฐ์ดํธ๋์ด ์ ๋ฌธ์์ด์ด ์ ์ฅ๋ ๋ฉ๋ชจ๋ฆฌ์ ๋ค๋ฅธ ์์น๋ฅผ ๊ฐ๋ฆฌํค๊ฒ ๋จ
๊ทธ๋์ ๊ณ์ val๊ณผ var์ ์ฐจ์ด๊ฐ ํท๊ฐ๋ ธ๋๋ฐ ๋๋์ด ์ดํดํ ๊ฒ ๊ฐ๋ค!
'๐ค2024 ์๋๋ก์ด๋ > โ๏ธ ํ๊ณ ์ธํด ๊ฐ๋ฐ ํ๋ก์ ํธ ๊ธฐ๋ก' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Notification์ ์์น ์ ๋ฐ์ดํธ ๋ฐฉ์ ๋ณ๊ฒฝ (1) | 2024.11.01 |
---|---|
lifecycleScope.launch๋ ๋ฉ์ธ ์ค๋ ๋์์๋ง ๋์๊ฐ๊น? (1) | 2024.09.10 |
๋ฐ์ดํฐ ์ ์ก ์๋ ๊ธฐ๋ก (0) | 2024.08.29 |
Android : suspend function์ด๋? (1) | 2024.08.29 |
Android : Handler ์ดํดํ๊ธฐ (0) | 2024.08.29 |