ํ์ฅํจ์ info๋ฅผ ํตํด ํธ์ถ ํด๋์ค๋ช ๊ณผ ๋ฉ์๋๋ช ์ถ๋ ฅ
class PopcornPopper{
fun on() {
info()
}
}
fun <T : Any> T.info(): T {
val res = this
Throwable().stackTrace[1].apply {
println("${generateTag()} ${generateMessage(res)}")
}
return this
}
fun <T : Any> T.info(msg: () -> Any): T {
Throwable().stackTrace[1].apply {
println("${generateTag()} ${generateMessage(msg())}")
}
return this
}
fun StackTraceElement.generateTag() = className.substringAfterLast(".")
fun StackTraceElement.generateMessage(msg: Any = "") = "$methodName() Line $lineNumber: $msg"
fun main() {
val test = PopcornPopper()
test.on()
}
PopcornPopper info() Line 7: ํ ์คํธ
์ถ์ฒ
discuss.kotlinlang.org/t/currently-executing-method-name-and-line-number/3438/2
'learned' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
powerset (0) | 2020.10.18 |
---|---|
[๋์์ธ ํจํด] ์ด๋ํฐ ํจํด (0) | 2020.09.08 |
[์๊ณ ๋ฆฌ์ฆ] ๋ฌธ์์ด ํ์์ฉ ์๋ฃ๊ตฌ์กฐ Trie (0) | 2020.09.08 |
MVVM ์ ์ฉ ์ํ ํ๋ก์ ํธ ๋ง๋ค์ด๋ณด๊ธฐ (0) | 2020.08.24 |