learned

ํ˜ธ์ถœ ํด๋ž˜์Šค์™€ ๋ฉ”์†Œ๋“œ ์ด๋ฆ„ ์ถœ๋ ฅ

ํ™•์žฅํ•จ์ˆ˜ 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

 

Currently executing method name and line number

No, there is no API in Kotlin to get the current line number.

discuss.kotlinlang.org