Ruby Silver
予約語
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
特殊な引数
可変長引数(複数の引数を設定可)
code:rb
def sample (*a) end # *のみだと引数が無くても処理される
sample (1,2,3)
オプション引数(引数をハッシュ値に指定)
code:rb
def sample (**a) end
sample (:key1 => 1, :key2 => 2)
=> sample{:key1 => 1, :key2 => 2}
添え字演算子
code:rb
a = 10, 20, 30, 40, 50
p a1..-2
p a1...-2
p a1,3
#=> 20, 30, 40
#=> 20, 30
#=> 20, 30, 40
配列同士の操作
code:rb
a = 1, 2, 3, 4
b = 3, 4, 5, 6
a | b #=> 1, 2, 3, 4, 5, 6
a & b #=> 3, 4
a - b #=> 1, 2
a + b #=> 1, 2, 3, 4, 3, 4, 5, 6
Integer#chr(encoding)
code:rb
p 12354.chr(Encoding::UTF_8)
#=> "あ"
IntegerとEncodingNameに対応する文字列一文字を返す
selfを引数で与えられたエンコーディングで正しく解釈できない場合は、RangeErrorが発生
演算子
code:rb
ary = []
ary << 1 && false
true || ary << 2
false && ary << 3
false || ary << 4
p ary
#=> 1, 4
||は左辺が義と評価されたときのみ右辺を評価
&&は左辺が真のときのみ右辺を評価
演算子の優先順位
code:rb
p 4 * 2 ** 3
#=> 32
**の方が優先される
正規表現
+ 1回以上繰り返し
Dirクラス
Dir.rmdir(ディレクトリの削除)
Dir.pwd / getwd(カレントディレクトリのフルパスを文字列で返す)
& 論理積(AND)
code:rb
a1 = 1,2,3
a2 = 4,2,3
p a1 & a2
# => 2, 3
| (重複を削除)
code:rb
a1 = 1,2,3
a2 = 4,2,3
p a1 | a2
# => 1, 2, 3, 4
宣言、定数
Rubyではメソッド内で定数を定義することができない
宣言された場合は、SyntaxErrorが発生
%記法
code:rb
%w(foo\ bar baz)
# => "foo bar", "baz"
%|apple banana orange|
# => "apple banana orange"
Timeクラス
Time.now(単位は秒)
メソッドと変数の探索順位
同じ名前のメソッドと変数が存在した場合変数が優先される