ルビーの魔法のコメントはどのように機能しますか?私は話している:ルビの魔法のコメント(#Encoding:utf-8)はどのように機能しますか?
# Encoding: utf-8
これは前処理指令ですか?このタイプの工事の他の用途はありますか?
ルビーの魔法のコメントはどのように機能しますか?私は話している:ルビの魔法のコメント(#Encoding:utf-8)はどのように機能しますか?
# Encoding: utf-8
これは前処理指令ですか?このタイプの工事の他の用途はありますか?
人々はこの行をという魔法のようなコメントと言います。処理する前に、ソースコードインタプリタはこの行を読み込み、適切なエンコーディングを設定します。私が信じる通訳言語ではよくあることです。少なくともPythonは同じアプローチを採用しています。
あなたは(それらのいくつかは、編集者によって認識されている)、いくつかの異なる方法でエンコーディングを指定することができます。
# encoding: UTF-8
# coding: UTF-8
# -*- coding: UTF-8 -*-
あなたはthis articleソースエンコーディングに関するいくつかの興味深いものを読むことができます。
私が知っている唯一のものはshebangですが、一般的にはUnixシェルに関連しており、Ruby固有のものではありません。
この魔法のコメントは、現在解析されているファイルのソースコードをRubyに伝えます。 Ruby 1.9.xはデフォルトでUS_ASCII
と仮定しているので、非ASCII文字(ウムラウトやアクセント記号付きの文字など)を使用する場合は、ソースコードのエンコード方法を通訳者に伝えなければなりません。
コメントは、認識されるファイルの最初の行(または使用される場合はシバンの下)でなければなりません。
その他のエンコード設定があります。詳細については、this questionを参照してください。
バージョン2.0以降、RubyはデフォルトでソースファイルのUTF-8エンコーディングを想定しています。とにかく、あなたがソースコードをUTF-8で書くと、この魔法のエンコーディングのコメントは稀である。
ご存じのように、魔法のコメントは特殊な前処理構造です。それらはファイルの先頭に定義する必要があります(ただし、先頭にunix shebangが既に存在する場合を除く)。 Ruby 2.3では、3種類の魔法のコメントがあります:
frozen_string_literal: true
と一致しない場合、あなたが問題に実行されますので、ソースエンコーディングを設定します:warn_indent: true
現在のファイル内のすべての文字列リテラルをフリーズ:現在のファイルのインデントの警告を有効にさらに詳しい情報:いくつかの方法でMagic Instructions
、この構成は、[ "マジックナンバー"](http://en.wikipedia.org/wiki/Magic_number_(プログラミング\))に似ています。 「魔法の言葉」という言葉は関連しているようです。 –
途方もないことは、インタプリタによってコメントが完全に無視されることです。しかし、このコメントの有無は意味を持っているため、インタプリタによって無視されることはないので、 "マジック"です。 – NobodysNightmare
https://www.engineyard.com/blog/whats-new-and-awesome-in-ruby-2 –