Top 10 programing fontを見ていたら
monofurというのがあった。
プログラミングに適した固定幅フォントだが、かなり独特で面白い。
2015年9月27日日曜日
rubyのテクニック覚書
rubyの勉強をしていくうちに、好ましい記述法や技術が分かってきた。
正規表現でマッチした文字を取り出したいだけ時にはmatchメソッドや=^メソッドではなくString型の[]メソッドが最も短く書ける
p "@@@@@hoge@@@@@"[/[a-z]+/] #=> "hoge"
パーセント記法はとても便利、場合によってはかなりみやすくなる。
p %s|symbol| #=> :symbol
p %w|abc def gh| #=> ["abc", "def", "gh"]
p %x|ruby -v| #=> "ruby 2.1.4p265 (2014-10-27 revision 48166) [x86_64-linux]\n"
p %r|[A-Z]| #=> /[A-Z]/
ある配列から他の配列を作りたいときなどに、以下のようにeachの前で結果を入れるための配列を初期化しておくのは冗長
array=[1,2,3,4,5,6]
array2=[]
array.each{|i| array2 << i * 2}
p array2 #=> [2, 4, 6, 8, 10, 12]
以下のようにmapメソッドで関数型言語の流儀で書くべき。
array=[1,2,3,4,5,6]
array2 = array.map{|i| i * 2}
p array2 #=> [2, 4, 6, 8, 10, 12]
条件によって要素を外したい、条件に合う要素のみの配列を作りたい場合にはreject,selectメソッドがよい。
さらに、配列からハッシュを作りたいときなどには、以下のようにreduceメソッドがよい。
array=[1,2,3,4,5,6]
hash = array.reduce({}){|h,i| h[i]= i*2; h }
p hash #=> {1=>2, 2=>4, 3=>6, 4=>8, 5=>10, 6=>12}
case文は===演算子で含有関係が評価されため、単純な一致の場合以外にも使える。
Integerの場合にはRangeがそれを含むかどうかを評価できる。
i = 10
case i
when 1..50
puts 'small'
when 51..10
puts 'big'
end
Stringの場合には正規表現が使える。
str = 'dojadf@ss'
case str
when /@/
puts "include @"
when /[a-z]+/
puts "only small letter"
end
登録:
投稿 (Atom)