LoginSignup
5
0

More than 3 years have passed since last update.

Kotlinで関数名やクラス名にダブルクオーテーションを使ってはいけない

Posted at

通常、ダブルクオーテーション等の記号は変数名・関数名・クラス名に使えません。
しかし、Kotlinにおいて`(´・ω・`)`のようにバッククオートで囲むことで、ほとんど全ての文字を使うことができるようになります。


class ` (´・ω・`)`
class `└(՞ةڼ◔)」`
fun `using namespace std`() = "575"
val `"ことりん かわいいよ"` = "I love Kotlin"

以上の定義は全てコンパイル可能です。

ところで、classはコンパイルされる時にファイルが作られます。
funも場合によっては作られるみたいです。(一時的なもの?@Testをつけたもののみ?詳細はわかりません)
そしてそれらのファイルの名前は、class等の名前からバッククオートを抜いたものになります。
つまり、

class ` (´・ω・`)`

をコンパイルすれば、(´・ω・`).classというファイルが作られる、はずです。

そして、Windowsではファイル名に以下の文字を使用できません。
¥ / : * ? " < > |
また、Linuxではファイル名に以下の文字を使用できません。
/ (NULL)

さて、問題です。
Windowsで

class `What is "this"?`

をコンパイルしたらどうなるでしょう?

答えは簡単。
コンパイラがクラッシュします。

環境によってはコンパイラーがクラッシュするコードなんて厄介極まりないので、クラス名や関数名にファイル禁則文字を使うのはやめましょう。

5
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0