個人用メモ。 ※見てくれる人が多いようなので追記しました。 そのうちまた追記します
リテラル
詳しくはドキュメント読みましょう http://docs.ruby-lang.org/ja/2.1.0/doc/spec=2fliteral.html
Stringの配列
%w(a b) # ["a", "b"] %w|a b| # ["a", "b"] 区切り文字は()以外にも<>とか[]とか||でも
Stringの配列で式展開(W大文字)
c="CCC" %W|a b #{c}| # ["a", "b", "CCC"]
Symbolの配列
%i(a b) # [:a, :b]
Symbolの配列でも式展開できる
c="CCC" %I|a b #{c}| # [:a, :b, :CCC]
正規表現
/Ruby/i # 大文字小文字区別しない
String
1文字
?a # "a"
普通の式展開
x = "fuga" "hoge #{x}" # "hoge fuga"
sprintfっぽい式展開
x = "fuga" y = 100 "hoge %s" % x # "hoge fuga" "hoge %s %i" % [x, y] # "hoge fuga 100" 複数もいけるで!
Hashも展開できる
"Hello %{name} !" % {name: "world"} # "Hello world!"
書式指定もできる
"%{year}-%
Array
積集合
[1, 3, 5, 7, 9] & [1, 2, 3, 4, 5] # [1, 3, 5]
headとtailに分解
head, *tail = [1, 2, 3] head # 1 tail # [2, 3]
zip, transpose
[1, 2, 3].zip [4, 5, 6] # [[1, 4], [2, 5], [3, 6]] arr1, arr2 = [[1, 4], [2, 5], [3, 6]].transpose arr1 # [1, 2, 3] arr2 # [4, 5, 6]
組み合わせ
[1, 2, 3, 4].combination(2).sort_by{|item| [item[0], item[1]]} # combinationは順番保証しないことになっているので適宜sort_by
Enumerable
each_slice
(1..7).each_slice(3).to_a # [[1, 2, 3], [4, 5, 6], [7]]