Rubyのソースコードのエンコーディング(スクリプトエンコーディング)は、マジックコメントを指定しない場合 UTF-8 です。マジックコメントを使うことで UTF-8 以外のエンコーディングも指定できます(詳細は
コメント、多言語化 を参照してください)。アルファベットの大文字と小文字は区別されます。識別子と一部のリテラルの途中を除いては任意の場所に空白文字やコメントを置くことができます。空白文字とはスペース、タブ、垂直タブ、バックスペース、キャリッジリターン、ラインフィード、改ページです。改行は行が明らかに次の行に継続する時だけ、空白文字として、それ以外では文の区切りとして解釈されます。行が演算子などで終わっていて明らかに継続する場合の他、次の行が . または &. から始まる場合も前の行の継続とみなされます。
"abc"
.upcase # => "ABC"(前の行に継続するので1つの式になる)
改行と認識されるのは、キャリッジリターン+ラインフィードかラインフィードです。
識別子
例foobar
ruby_is_simple
ねこ
_x1
Ruby の識別子は英字またはアンダースコア(_)から始まり、英字、アンダースコア(_)または数字からなります。識別子の長さに制限はありません。大文字と小文字は区別されます。
ソースコードのエンコーディングが ASCII 以外の場合、ASCII の範囲外の文字は文字の種類を問わずすべて識別子を構成する文字として扱われ、識別子の先頭にも使えます(ソースコードのエンコーディングについては 多言語化 を参照してください)。漢字・仮名のような文字だけでなく、全角数字や → のような記号、全角スペース(U+3000)も識別子の一部になります。見た目では空白や記号に見える文字が識別子に含まれてしまうことがあるので注意してください(全角スペースの例は 変数と定数 を参照してください)。
ねこ = 1
→ = 2 # 記号も識別子になる
12 = 3 # 全角数字から始まる識別子
p local_variables # => [:ねこ, :→, :12]
アルファベット大文字(A〜Z)で始まる識別子、および(ソースコードのエンコーディングが Unicode の場合)Unicode の大文字またはタイトルケース文字で始まる識別子は定数と解釈されます。それ以外の識別子はローカル変数またはメソッド名と解釈されます(詳細は 変数と定数/定数 を参照してください)。
インスタンス変数・クラス変数・グローバル変数を表す接頭辞 @、@@、$ は識別子には含まれません。例えば @foo の識別子の部分は foo で、変数名としては接頭辞を含めた @foo 全体を使います(変数と定数 を参照してください)。予約語は変数名などの識別子としては使えません(接頭辞付きの変数名やメソッド名として使える場合については 予約語 を参照してください)。
メソッド名にはこの識別子の他に、識別子の末尾に ? や ! を付けたもの、末尾に = を付けた代入形式のメソッド名(foo=)、== や + のような再定義可能な演算子も使えます
(メソッド呼び出し、クラス/メソッドの定義/メソッド定義 を参照してください)。
コメント
例# 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