[Kotlin] ๋ฒ”์šฉ ํ•จ์ˆ˜: with, let, apply, run, also

[์›๋ณธ ๋งํฌ]

์ด ํ•จ์ˆ˜๋“ค์€ ์ „๋ถ€ ๊ฐ์ฒด์™€ ๋žŒ๋‹ค๋ฅผ ๋ฐ›์•„ ๋ฌธ๋ฒ•์„ ํ™•์žฅํ•˜๋Š” ๋А๋‚Œ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํŽธ๋ฆฌํ•œ ๋…€์„๋“ค์ด๋‹ค.


with ํ•จ์ˆ˜
์ด๊ฑด ๊ฐ์ฒด๋ฅผ ๋ฐ›์•„, ํ•ด๋‹น ๊ฐ์ฒด์˜ ๋ฉค๋ฒ„๋ฅผ ์Šค์ฝ”ํ”„ ์ง€์ • ์—†์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ์ด๋Ÿฐ ์ฝ”๋“œ์— image

image with์„ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด image

image ์ € ๋ฒ”์œ„์ง€์ • obj. ๋ฅผ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ €๊ฒƒ๋„ ๊ฒฐ๊ตญ ๊ทธ๋ƒฅ ํ•จ์ˆ˜๋ผ์„œ, ์ƒ๋žต์„ ํ’€๋ฉด ๊ทธ๋ƒฅ ํ•จ์ˆ˜์ฒ˜๋Ÿผ ๋ณด์ธ๋‹ค. image

image ์ด๊ฒŒ ์›ํ˜•์ด๋‹ค.
with(๊ฐ์ฒด, ํ•จ์ˆ˜)

๊ทธ๋ฆฌ๊ณ , ๋งˆ์ง€๋ง‰ ํ‘œํ˜„์‹์˜ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

์•„๋ž˜์˜ ํ•จ์ˆ˜๋“ค๋„ ๊ฐ™์€ ๊ธฐ๋ณธ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋‚˜, ์Šคํƒ€์ผ์ด ์กฐ๊ธˆ์”ฉ ๋‹ค๋ฅด๋‹ค.


also ํ•จ์ˆ˜
์ด๊ฑด ์ฒซ๋ฒˆ์งธ ์ธ์ž ๊ฐ์ฒด์˜ ํ™•์žฅํ•จ์ˆ˜ ํ˜•ํƒœ๋กœ ํ˜ธ์ถœํ•œ๋‹ค.
๊ฐ์ฒด๋กœ obj๋ฅผ ๋„˜๊ธด๋‹ค๋ฉด obj.also{ ... }๋กœ ํ‘œํ˜„ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.
๊ฐ์ฒด๋ฅผ ์•”์‹œ์ ์œผ๋กœ ๋ฐ›๊ธฐ ๋•Œ๋ฌธ์— it์œผ๋กœ๋งŒ ์ ‘๊ทผํ•˜๋ฉฐ, ์ตœ์ข…์ ์œผ๋กœ ๊ฐ์ฒด๋ฅผ ๋‹ค์‹œ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
๋งŒ์•ฝ ๊ตฌ๋ฌธ ๋‚ด์—์„œ it์œผ๋กœ ๋ณ€๊ฒฝ์„ ๊ฐ€ํ–ˆ๋‹ค๋ฉด ๊ทธ๊ฒƒ๋„ ํ•จ๊ป˜ ์ ์šฉํ•ด์„œ ๋ฐ˜ํ™˜ํ•œ๋‹ค... image

image


apply ํ•จ์ˆ˜
์ด๊ฒƒ๋„ also์™€ ๊ฐ™์ด ํ™•์žฅํ•จ์ˆ˜์ฒ˜๋Ÿผ ๋™์ž‘ํ•œ๋‹ค.
๋ฐ›์€ ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค๋Š” ๊ฒƒ๋„ ๋™์ผํ•œ๋ฐ,
with์ฒ˜๋Ÿผ ์ด๋ฆ„์ด ๋ฒ—๊ฒจ์ง„๋‹ค๋Š”๊ฑด ๋˜ ๋‹ค๋ฅด๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ ๋ฒ”์œ„๋„ ํ•œ์ •๋ผ์žˆ๋‹ค. ํ•จ์ˆ˜๋Š” ํ˜ธ์ถœํ•˜์ง€ ๋ชปํ•˜๊ณ , ํ”„๋กœํผํ‹ฐ๋งŒ ์ด๋ฆ„์„ ๋ฒ—๊ฒจ์„œ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ž˜์„œ ๋ณดํ†ต ๊ฐ์ฒด ๋‚ด๋ถ€์˜ ๊ฐ’์„ ๋‹ค์‹œ ์ดˆ๊ธฐํ™”ํ• ๋•Œ ์ข…์ข… ์‚ฌ์šฉํ•œ๋‹ค. image

image


let ํ•จ์ˆ˜
์ด๊ฒƒ๋„ ์ฒซ๋ฒˆ์งธ ์ธ์ž ๊ฐ์ฒด๋ฅผ ๋ฐ›๋˜, ํ•ด๋‹น ๊ฐ์ฒด์˜ ํ™•์žฅํ•จ์ˆ˜์ฒ˜๋Ÿผ ๋™์ž‘ํ•œ๋‹ค.
์–œ ๊ฐ์ฒด๋ฅผ ๊ทธ๋Œ€๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ทธ๋Ÿฐ๊ฑด ์—†๋‹ค. ๋งˆ์ง€๋ง‰ ํ‘œํ˜„์‹์ด ๋ฐ˜ํ™˜๊ฐ’์ด ๋œ๋‹ค.

๊ทธ๋ƒฅ ๊ฐ์ฒด๋ฅผ it์œผ๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๋ธ”๋Ÿญ์„ ํ•˜๋‚˜ ๋งŒ๋“ค ๋ฟ์ด๋‹ค. image

image ์‚ฌ์‹ค ์ด๊ฒƒ๋งŒ์ด๋ฉด ์ด๊ฑธ ์–ด๋”ฐ์“ฐ๋‚˜ ์‹ถ์€๋ฐ

?.์™€ ํ•จ๊ป˜ null ์œ ํšจ์„ฑ์ด ๊ฒ€์ฆ๋œ ๊ฒฝ์šฐ์˜ ๊ตฌ๋ฌธ์„ ๋งŒ๋“ค๋•Œ ์•„์ฃผ ์ข‹๋‹ค. image

image


run ํ•จ์ˆ˜
์ด๊ฒƒ๋„ ์ฒซ๋ฒˆ์งธ ๊ฐ์ฒด์˜ ํ™•์žฅํ•จ์ˆ˜์ฒ˜๋Ÿผ ๋™์ž‘ํ•œ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ๊ฐ์ฒด์˜ ์ด๋ฆ„์„ ๋ฒ—๊ฒจ๋‚ด๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
๊ฐ์ฒด๋ฅผ ๊ทธ๋Œ€๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค๋“ ์ง€ ํ•˜๋Š” ๊ทธ๋Ÿฐ ์ง“์€ ์•ˆํ•œ๋‹ค. ์ด๊ฒƒ๋„ ๋งˆ์ง€๋ง‰ ํ‘œํ˜„์‹์˜ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. image

image

๊ทธ๋ ‡๋‹ค.


์ฐธ์กฐ
https://medium.com/@limgyumin/%EC%BD%94%ED%8B%80%EB%A6%B0-%EC%9D%98-apply-with-let-also-run-%EC%9D%80-%EC%96%B8%EC%A0%9C-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94%EA%B0%80-4a517292df29
https://www.androidhuman.com/lecture/kotlin/2016/07/06/kotlin_let_apply_run_with/