2012-01-16 15 views

答えて

52

人々はこの行をという魔法のようなコメントと言います。処理する前に、ソースコードインタプリタはこの行を読み込み、適切なエンコーディングを設定します。私が信じる通訳言語ではよくあることです。少なくともPythonは同じアプローチを採用しています。

あなたは(それらのいくつかは、編集者によって認識されている)、いくつかの異なる方法でエンコーディングを指定することができます。

# encoding: UTF-8 
# coding: UTF-8 
# -*- coding: UTF-8 -*- 

あなたはthis articleソースエンコーディングに関するいくつかの興味深いものを読むことができます。

私が知っている唯一のものはshebangですが、一般的にはUnixシェルに関連しており、Ruby固有のものではありません。

+0

、この構成は、[ "マジックナンバー"](http://en.wikipedia.org/wiki/Magic_number_(プログラミング\))に似ています。 「魔法の言葉」という言葉は関連しているようです。 –

+1

途方もないことは、インタプリタによってコメントが完全に無視されることです。しかし、このコメントの有無は意味を持っているため、インタプリタによって無視されることはないので、 "マジック"です。 – NobodysNightmare

+0

https://www.engineyard.com/blog/whats-new-and-awesome-in-ruby-2 –

13

この魔法のコメントは、現在解析されているファイルのソースコードをRubyに伝えます。 Ruby 1.9.xはデフォルトでUS_ASCIIと仮定しているので、非ASCII文字(ウムラウトやアクセント記号付きの文字など)を使用する場合は、ソースコードのエンコード方法を通訳者に伝えなければなりません。

コメントは、認識されるファイルの最初の行(または使用される場合はシバンの下)でなければなりません。

その他のエンコード設定があります。詳細については、this questionを参照してください。

バージョン2.0以降、RubyはデフォルトでソースファイルのUTF-8エンコーディングを想定しています。とにかく、あなたがソースコードをUTF-8で書くと、この魔法のエンコーディングのコメントは稀である。

6

ご存じのように、魔法のコメントは特殊な前処理構造です。それらはファイルの先頭に定義する必要があります(ただし、先頭にunix shebangが既に存在する場合を除く)。 Ruby 2.3では、3種類の魔法のコメントがあります:

  • エンコードのコメント:他の回答を参照してください。常に最初の魔法のコメントでなければなりません。 ASCII互換でなければなりません。ファイルの実際のエンコーディングが指定されたエンコーディング
  • frozen_string_literal: trueと一致しない場合、あなたが問題に実行されますので、ソースエンコーディングを設定します:
  • warn_indent: true現在のファイル内のすべての文字列リテラルをフリーズ:現在のファイルのインデントの警告を有効に

さらに詳しい情報:いくつかの方法でMagic Instructions

関連する問題