Ruby - よく使うのに忘れてしまう文法の備忘録

Ruby実行時の文字コードを指定する方法

putsメソッドなどの文字列の表示において、文字化けすることがあります。
文字コードを指定する実行オプションを付加することで正常に表示することができます。

オプション 文字コード
-Ks Shift_JIS
-Ku UTF-8
-Ke EUC-JP

例えば、SJISで記述されたスクリプトを実行する場合には、以下のようにオプション指定します。


ruby -Ks script.rb

Rubyで複数行コメントを記述するには

複数行をコメントとする場合には「=begin」と「=end」で囲みます。


=begin
ここはコメントです。
コメントアウトしているので、下記のメソッドも実行されません。
puts "Ruby"
=end

なお、一行に対するコメント記号は「#」となります。
Rubyコメントでは、必ず行末までコメントアウトされます。行の途中のみコメントとすることはできません。


変数スコープ

Rubyの変数は、その変数を参照したり変更できる範囲(スコープ)が設定されています。

変数の種類 記述方法 範囲
ローカル変数 文字列先頭がアルファベットの小文字またはアンダーバー「_」で始まります。 定義された場所の中だけで使える変数です。例えば、メソッドを跨いだりすると使えません。
グローバル変数 文字列先頭が「$」で始まります。 プログラムのどこからでも参照できます。
インスタンス変数 文字列先頭が「@」で始まります。 インスタンスメソッドとinitializeメソッドの外では利用できません。
クラス変数 文字列先頭が「@@」で始まります。 クラス内ならどこでも参照・定義・更新できる。
クラスを超えた参照はできない。(継承させるとできる)
クラスインスタンス変数 クラス内で@変数名で定義する。 クラスインスタンス変数は、クラス自身のインスタンス変数です。
なので、クラスインスタンス変数はスーパークラスとサブクラスで変数の内容が共有されません。
例えば、スーパークラスで定義したクラスインスタンス変数を、そのサブクラスから参照してもnilが返ります。

イテレータ(iterator)

反復処理を記述するRuby特有のメソッドです。

「iterate」は繰り返すという意味です。


timesメソッド

指定回数分だけ処理を繰り返します。

回数は「0」から開始されます。


繰り返す回数.times { |回数|
  繰り返す処理
}

eachメソッド

配列の全要素をそれぞれアクセスします。


配列.each { |変数(配列要素)|
  繰り返す処理
}

繰り返しの制御

繰り返しやイテレータの制御命令が以下の3つあります。

break 繰り返しを中断して、ループを抜けます。
next 次の繰り返し条件に処理を移行します。
redo 再度同じ条件で繰り返し処理をやり直します。


関連ページ