シンボルリテラルの解説:Scala 3で廃止予定の機能(3)

Scala 3 (Dotty 0.26.0-RC1)
最終更新:2020年9月20日

[AD] scalapediaでは記事作成ボランティアを募集しています

この記事では、Scala 3にて廃止予定のシンボルリテラルについて解説します。

シンボルリテラルは廃止される予定

シンボルは、わずかな定数時間で比較できる便利なデータ構造として導入されました。
かつてはMapのキーなどに用いられました。

これに対して、文字列の比較は文字数の分だけ計算量が変化します。

とはいえ、シンボルやシンボルリテラルは使用頻度が低く、維持するメリットよりデメリットのほうが上回ると考えられたので、シンボルリテラルはサポートされなくなりました。

scala.Symbolクラスはまだ存在しますので、シンボルリテラル'xyzSymbol("xyz")と変換されます。

しかし、そのSymbolクラスも将来的に非推奨となり削除される予定です。

代わりにプレーン文字列リテラル'xyz'を使いましょう。

移行は3.0にアップデートしてからでOK

Scala 2.13では既に非推奨となっていますが、3.0でも使用することができます。

3.0においてシンボルリテラルを書くと、通常ではコンパイルエラーになります。
しかし移行オプション3.0-migrationを設定すると、以前と同様に使用することができます。

さらに、移行オプション3.0-migrationを設定している際にコンパイラオプション-rewriteを設定すると、使用箇所を自動で書き換えてもらえます。

移行オプションについてはこちらの記事をご覧ください。

便利ですので、移行作業は3.0へのアップデート後に行うことをおすすめします。

外部リンク:Dropped: Symbol Literals

サイト内検索