🤖
【Kotlin】Kotlinで予約語と同じ変数名やメソッド名を使用する
※ 個人ブログを閉鎖するので個人ブログに書いていたものを転載、記載内容が古い可能性があります
今回の投稿は小ネタで短いです。ただ地味に私が嵌りました。
プログラミング言語の予約語とは
プログラム言語では予約語と呼ばれるものがあります。その言語のベース機能で用意され、用途が決められている文字列のことです。
例えば、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