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
配列同士の操作
code:rb
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
||は左辺が義と評価されたときのみ右辺を評価
&&は左辺が真のときのみ右辺を評価
演算子の優先順位
code:rb
p 4 * 2 ** 3
**の方が優先される
正規表現
+ 1回以上繰り返し
Dirクラス
Dir.rmdir(ディレクトリの削除)
Dir.pwd / getwd(カレントディレクトリのフルパスを文字列で返す)
& 論理積(AND)
code:rb
p a1 & a2
| (重複を削除)
code:rb
p a1 | a2
宣言、定数
Rubyではメソッド内で定数を定義することができない
宣言された場合は、SyntaxErrorが発生
%記法
code:rb
%w(foo\ bar baz)
%|apple banana orange|
# => "apple banana orange"
Timeクラス
Time.now(単位は秒)
メソッドと変数の探索順位
同じ名前のメソッドと変数が存在した場合変数が優先される