ํ์ฅํจ์ 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
'learned' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
powerset(0) | 2020.10.18 |
---|---|
[๋์์ธ ํจํด] ์ด๋ํฐ ํจํด(0) | 2020.09.08 |
[์๊ณ ๋ฆฌ์ฆ] ๋ฌธ์์ด ํ์์ฉ ์๋ฃ๊ตฌ์กฐ Trie(0) | 2020.09.08 |
MVVM ์ ์ฉ ์ํ ํ๋ก์ ํธ ๋ง๋ค์ด๋ณด๊ธฐ(0) | 2020.08.24 |