プログラムは、式を並べることによって構成されています。ここでは、Rubyを構成する式と演算子について説明します。
Rubyの代表的な演算子は、C言語に影響を受けた言語とほぼ同様です。以下に、代表的な演算子の一覧を示します。
演算子 | 例 | 意味 |
---|---|---|
+ | +x | 単項のプラス |
+ | x + y | 加算 |
- | -x | 単項のマイナス |
- | x - y | 減算 |
* | x * y | 乗算 |
/ | x / y | 除算 |
% | x % y | 除算の余り |
** | x ** y | xのy乗 |
演算子 | 例 | 意味 |
---|---|---|
& | x & y | ビットごとのAND |
| | x | y | ビットごとのOR |
^ | x ^ y | ビットごとのXOR |
~ | ~x | ビットごとのNOT |
<< | x << y | xをy回左シフト |
>> | x >> y | xをy回右シフト |
ただし、Rubyでは演算子は単なるメソッドであり、再定義可能なので演算対象のオブジェクトによって振る舞いが変わることに注意してください。
他言語の経験があれば、基本形の代入は直感的に理解できるでしょう。戻り値は代入したオブジェクトそのものです。以下に例を挙げます。
[1] pry(main)> teapot = "tea" => "tea"
Rubyの変数は動的な型付けを行うため、後から別の型を持つオブジェクトを代入することもできます。以下のサンプルコードは、変数「teapot」に文字列を代入し、後から整数を代入する例です。
[2] pry(main)> teapot = "tea" => "tea" [3] pry(main)> teapot = 42 => 42 [4] pry(main)> teapot => 42
Rubyでは、一度に複数の変数にオブジェクトを代入できます。多重代入の戻り値は配列です。
[1] pry(main)> x, y, z = 1, 2, 3 => [1, 2, 3] [2] pry(main)> x => 1 [3] pry(main)> y => 2 [4] pry(main)> z => 3
左辺の要素の数よりも、右辺の要素の数の方が多い場合は、余った右辺の要素は代入されません。
[5] pry(main)> x, y = 1, 2, 3 => [1, 2, 3] [6] pry(main)> x => 1 [7] pry(main)> y => 2
また、右辺の要素の数の方が少ない場合は、対応する右辺の要素の無い左辺の要素に「nil」が代入されます。「nil」はC#やJavaにおける「null」のようなもので、「何も無い」ことを表すオブジェクトです。
[8] pry(main)> x, y, z = 1, 2 => [1, 2] [9] pry(main)> x => 1 [10] pry(main)> > y => 2 [11] pry(main)> > z => nil
右辺に配列を使うこともできます(配列については次回解説します)。
[12] pry(main)> x, y = [1, 2] => [1, 2] [13] pry(main)> x => 1 [14] pry(main)> > y => 2
Rubyには、あるオブジェクトに演算子を適用した結果を、そのままそのオブジェクトに代入する自己代入という仕組みがあります。以下に、加算の結果を自己代入する例を示します。「x」に41を代入し、その後、「x」に1を加算した結果をそのまま`x`に代入しています。
[1] pry(main)> x = 41 => 41 [2] pry(main)> x += 1 => 42
自己代入に使える演算子として、`+`以外にも以下のようなものがあります。
+ - * / % ** & | ^ << >> && ||
C言語に影響を受けた言語と違い、Rubyにはインクリメント演算子「++」やデクリメント演算子「--」が無いので、自己代入を使うようにしてください。
次ページからは、条件分岐と繰りループ(繰り返し)について説明します。複数の行にまたがる例が多くなるので、ここからはpryを使わず、お好みのエディターでスクリプトを書き、「ruby」コマンドで実行するスタイルをお勧めします。作成したスクリプトを実行する場合は、以下のようなコマンドを実行します。
$ ruby hoge.rb
Copyright © ITmedia, Inc. All Rights Reserved.