Kotlin inline

๋ฐฐ๊ฒฝ

  • ๊ณ ์ฐจ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํŠน์ •ํ•œ ๋Ÿฐํƒ€์ž„ ํŽ˜๋„ํ‹ฐ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ๊ฐ ํ•จ์ˆ˜๋Š” ๊ฐ์ฒด์ด๋ฉฐ, Closure๋ฅผ ์บก์ฒ˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
    • ํ•จ์ˆ˜ ๊ฐ์ฒด์™€ ํด๋ž˜์Šค์— ๋Œ€ํ•œ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น, ๊ทธ๋ฆฌ๊ณ  ๊ฐ€์ƒ ํ˜ธ์ถœ์€ ๋Ÿฐํƒ€์ž„์—์„œ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์œ ๋ฐœํ•œ๋‹ค.
  • ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Ÿฐ ์˜ค๋ฒ„ํ—ค๋“œ๋Š” ๋žŒ๋‹ค ํ‘œํ˜„์‹์„ ์ธ๋ผ์ธ ์ฒ˜๋ฆฌํ•จ์œผ๋กœ์จ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋‹ค.

์˜ˆ์‹œ

# ํ•จ์ˆ˜ํ˜•์œผ๋กœ ์„ ์–ธ๋œ ์˜ˆ์‹œ
lock(l) { foo() }
 
# ์ปดํŒŒ์ผ๊ฐ€ ์•„๋ž˜ ํ˜•ํƒœ๋กœ ์ตœ์ ํ™”ํ•œ ์˜ˆ์‹œ
l.lock() 
try { 
	foo() 
} finally { 
	l.unlock() 
}
  • ์ฝ”ํ‹€๋ฆฐ์—์„œ inline ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์‹ค์ œ๋กœ ํ˜ธ์ถœ ์ง€์ ์— ์ง์ ‘ ์‚ฝ์ž…(inline) ํ•œ๋‹ค.
  • ๊ทธ๋ ‡์ง€๋งŒ ๋„ˆ๋ฌด ํฐ ํ•จ์ˆ˜์— inline์„ ์‚ฌ์šฉํ•˜๋Š”๊ฑด ์„ฑ๋Šฅ์ƒ์œผ๋กœ ์ด๋“์„ ๋ณผ ์ˆ˜ ์—†๋Š” ์ฃผ์˜ํ•ด์•ผ ํ•œ๋‹ค.

See Also

Reference