Rubyのマジックコメントはどのように機能しますか?私が話しているのは:
# Encoding: utf-8
これは前処理指令ですか?このタイプの構造の他の用途はありますか?
何らかの理由で、この行はmagic commentと呼ばれます。ソースコードを処理する前に、インタープリターがこの行を読み取り、適切なエンコーディングを設定します。それは私が信じるインタプリタ言語ではかなり一般的です。少なくともPythonは同じアプローチを使用します。
エンコーディングはさまざまな方法で指定できます(一部は編集者に認識されます)。
# encoding: UTF-8
# coding: UTF-8
# -*- coding: UTF-8 -*-
この記事 で、ソースエンコーディングに関する興味深い情報を読むことができます。
私が知っている唯一の類似の構造は Shebang ですが、これは一般的にUnixシェルに関連しており、Ruby固有ではありません。
このマジックコメントは、Ruby現在解析されているファイルのソースエンコーディングを示します。As Ruby 1.9.xは、デフォルトでUS_ASCII
ASCII以外の文字(ウムラウトやアクセント付き文字など)を使用する場合、ソースコードのエンコーディングをインタープリターに指示している。
認識するには、コメントをファイルの最初の行(または使用する場合はシバンの下)にする必要があります。
他のエンコーディング設定があります。詳細は この質問 を参照してください。
バージョン2.0以降、RubyはデフォルトでソースファイルのUTF-8エンコーディングを想定しています。そのため、UTF-でソースコードを記述した場合、このマジックエンコーディングコメントは一般にはあまり見られません。とにかく8。
お気づきのように、魔法のコメントは特別な前処理構造です。それらはファイルの先頭で定義する必要があります(ただし、先頭に nix Shebang がある場合を除きます)。 Ruby 2.3以降、3種類の魔法のコメントがあります:
frozen_string_literal: true
:現在のファイル内のすべての文字列リテラルをフリーズしますwarn_indent: true
:現在のファイルのインデント警告をアクティブにします詳細: マジックインストラクション