【Kotlin】Kotlinで予約語と同じ変数名やメソッド名を使用する

2019年5月30日

今回の投稿は小ネタで短いです。ただ地味に私が嵌りました。

プログラミング言語の予約語とは

プログラム言語では予約語と呼ばれるものがあります。その言語のベース機能で用意され、用途が決められている文字列のことです。

例えば、Javaのifとかforとかのことです。Javaでは予約語と同じ変数やメソッド名を使用することはできません。しかし、Kotlinなら予約語と同じメソッドを使えるのです!!

Kotlinで予約語と同じ

Kotlinで予約語と同じ変数名やメソッド名を使用するには、対象をバッククォートで囲みます。

val `for` = "予約語だけど使えるよ!"
print(`for`)

これだけで使えます!

これで嵌った…

予約語の扱いによって嵌りました…。じつはKotlinにはinという予約語があります。

これがjooqで使用するwhere inのin句に引っかかりました…。以下みたいに使おうとしたらエラーが発生し、何か分からずぐぐっても全然でてこない…。

dsl.selectFrom(Table.TABLE)
            .where(Table.TABLE.COLUMN.in(hogehogeList))

英語で調べたら出てきました…。jooqは日本語のドキュメントが少ないのがきついですね。上で書いた予約語の使い方通り、バッククォートで囲んであげて無事解決しました。

dsl.selectFrom(Table.TABLE)
            .where(Table.TABLE.COLUMN.`in`(hogehogeList))

なかなか渋いエラーでした。