このマニュアルは既にメンテナンスが終了したバージョンの Ruby を対象としています。 最新版のマニュアルへ

Ruby 3.0 リファレンスマニュアル

字句構造

[edit]

Rubyのソースコードのエンコーディング(スクリプトエンコーディング)は、マジックコメントを指定しない場合 UTF-8 です。マジックコメントを使うことで UTF-8 以外のエンコーディングも指定できます(詳細は コメント多言語化 を参照してください)。アルファベットの大文字と小文字は区別されます。識別子と一部のリテラルの途中を除いては任意の場所に空白文字やコメントを置くことができます。空白文字とはスペース、タブ、垂直タブ、バックスペース、キャリッジリターン、ラインフィード、改ページです。改行は行が明らかに次の行に継続する時だけ、空白文字として、それ以外では文の区切りとして解釈されます。行が演算子などで終わっていて明らかに継続する場合の他、次の行が . または &. から始まる場合も前の行の継続とみなされます。

行頭ドットによる行継続の例
"abc"
  .upcase   # => "ABC"(前の行に継続するので1つの式になる)

改行と認識されるのは、キャリッジリターン+ラインフィードかラインフィードです。

識別子

foobar
ruby_is_simple
ねこ
_x1

Rubyの識別子は英字またはアンダースコア('_')から始まり、英字、アンダースコア('_')または数字からなります。識別子の長さに制限はありません。

ソースコードのエンコーディングが ASCII 以外の場合は、英字に加えて日本語などの ASCII の範囲外の文字も識別子に使えます(ソースコードのエンコーディングについては 多言語化 を参照してください)。アルファベット大文字([A-Z])で始まる識別子、および (ソースコードのエンコーディングが Unicode の場合)Unicode の大文字またはタイトルケース文字で始まる識別子は定数と解釈されます(詳細は 変数と定数/定数 を参照してください)。

メソッド名にはこの識別子の他に、識別子の末尾に ?! を付けたものや、==+ のような再定義可能な演算子も使えます (メソッド呼び出しクラス/メソッドの定義/メソッド定義 を参照してください)。

コメント

# this is a comment line

スクリプト言語の習慣にならい、文字列中や文字リテラル ?# 以外の #から行末までをコメントと見なします。

コメントの詳細やマジックコメント(ファイル先頭の特別な形式のコメント) については コメント を参照してください。

埋め込みドキュメント

=begin
the everything between a line beginning with `=begin' and
that with `=end' will be skipped by the interpreter.
=end

Rubyのソースコードにドキュメントを埋め込む事ができます。文が始まる部分の行頭の=beginから、=endで始まる行までが埋め込みドキュメントです。Ruby インタプリタとしては内容に縛りはかけませんが、通常は RD 形式でドキュメントを埋め込むことを期待しています(詳細は コメント を参照してください)。

予約語

予約語は以下のものです。

BEGIN    class    ensure   nil      self     when
END      def      false    not      super    while
alias    defined? for      or       then     yield
and      do       if       redo     true     __LINE__
begin    else     in       rescue   undef    __FILE__
break    elsif    module   retry    unless   __ENCODING__
case     end      next     return   until

予約語はクラス名、変数名などに用いることはできません。ただし接頭辞$, @、@@が先頭についたものは予約語とは見なされません。また、def のあとやメソッド呼び出しのピリオドのあとなどメソッド名であるとはっきり分かる場所ではメソッド名として用いることができます。

また、番号指定パラメータは変数名、def で定義するメソッド名に用いることはできません。

_1 _2 _3 _4 _5 _6 _7 _8 _9