Ruby – 配列
配列の利用
Rubyの配列は、Arrayクラス(http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=Array)を利用しているが、それを知らなくても利用できるように配慮されている。
たとえば配列の宣言には、
たとえば配列の宣言には、
test = []
とするが、これはArrayクラスのクラスメソッド[]を利用している(Array.[])。一見すると、言語仕様に組み込まれているように見える。
※すごいセンスだなぁ。
宣言
Arrayのクラスメソッド[]を利用する方法。
names = [] tests = ["hello"] loop = ["11111", "22222"]
Arrayのクラスメソッドnewを利用する方法。
new = Array.new()
参照・代入
参照・代入にはArrayクラスのメソッド[]を利用する。
参照例
p tests[0] p tests[999]
代入例
tests[0] = "xyz" tests[999] = 999
宣言されていない配列に値を代入しようとするとエラーが発生するので注意。
ages[2] = 999 #->エラー
配列のループ
昔っぽく
for i in 0 .. loop.size - 1
p loop[i]
end
eachループ(便利!)
loop.each do |number|
p number
end
Ruby – 制御構造:条件分岐
制御構造:条件分岐
if
if 式 [then]
式
elsif 式 [then]
式
else
式
end
elseif,elseは省略可能
if修飾子
式 if 条件式
例
p _name if $DEBUG
$DEBUGがtrueの場合に、左側のp _nameが実行される。
unless
ifの逆
unless 式 [then]
式
else
式
end
unless修飾子
if修飾子の逆
p _name unless $STATUS
case
case 式
when 条件式
式
when 条件式
式
e lse
式
end
Ruby – クラス変数
クラス変数
変数名の先頭に@@をつけると、その変数はクラス変数として扱われる。クラス変数は特定のクラスに属していて、クラスの得意メソッドや、そのクラスから生成されたインスタンスから参照することができる。
インスタンスをいくつ生成しても、クラス変数はひとつだけとなり、個々のインスタンスから共有される。
例
@@name = "his_name"
サンプルコード
sample.rb
class Sample
@@sex = "man"
def printSex
print @@sex, "\n"
end
def setSex(sex)
@@sex = sex
end
end
sample = Sample.new
sample.printSex()
sample.setSex("woman")
sample2 = Sample.new
sample2.printSex()
結果
man woman
sample, sample2が参照しているインスタンスは、互いに同じクラスから生成されている。よって、sample, sample2共に、変数@@sexは共有されることになる。
上記の例ではsampleとsample2が参照している@@sexが同じであることを示している。

