C#にはnameof演算子というものがあり、変数名を文字列リテラルにして埋め込んでくれる(主にデバッグとINotifyPropertyChanged向けの)便利機能があります。
Kotlinにはないらしいので頑張ってそれっぽいのを錬成(海外フォーラム丸パクリともいう)してみました。
ソースはこれです。
Nameof to get names of program elements - Language Design - Kotlin Discussions
Given that IntelliJ IDEA’s refactorings do a fairly good job
I disagree. String literal search may find many unrelated usages especially for common identifier names, so it couldn’t be trusted really.
この流れすき。
結論
コード例
class Fuga(val foo: Int){ val bar: Int get() = foo * 2 fun fooTimes(multiplier: Int) = foo * multiplier fun printMembers(){ //クラスの中からメンバを呼ぶときはこっち println(::bar.name) // -> bar println(::fooTimes.name) // -> fooTimes } } //↑こういう感じの定義があるとする fun main() { val hoge = 3 //ローカル変数 println(::hoge.name) // -> hoge val fuga=Fuga(5) //クラス名 println(Fuga::class.java.name) // -> Fuga //クラスの関数名 println(Fuga::fooTimes.name) // -> fooTimes //クラスのフィールド名 println(Fuga::foo.name) // -> foo println(Fuga::bar.name) // -> bar fuga.printMembers() }