通常、ダブルクオーテーション等の記号は変数名・関数名・クラス名に使えません。
しかし、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"?`
をコンパイルしたらどうなるでしょう?
答えは簡単。
コンパイラがクラッシュします。
環境によってはコンパイラーがクラッシュするコードなんて厄介極まりないので、クラス名や関数名にファイル禁則文字を使うのはやめましょう。