🤖

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

2023/11/01に公開

※ 個人ブログを閉鎖するので個人ブログに書いていたものを転載、記載内容が古い可能性があります

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

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

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

例えば、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))

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

Discussion