RubySucks
おどろきさいしょうのほうそく
ぶろっく
def do_lambda lambda{ return true }.call return false end def do_proc proc{ return true }.call return false end def do_times 3.times{ return true } return false end p do_proc p do_lambda p do_times
map & inject
Ruby 1.9 にて
irb(main):007:0> [1,2].inject(&:+) => 3 irb(main):008:0> [1,2].inject(:+) => 3 irb(main):009:0> [1,2].map(&:to_s) => ["1", "2"] irb(main):010:0> [1,2].map(:to_s) ArgumentError: wrong number of arguments(1 for 0) from (irb):10:in `map' from (irb):10 from /usr/local/lib/ruby/1.9.0/irb.rb:150:in `block (2 levels) in eval_input' from /usr/local/lib/ruby/1.9.0/irb.rb:259:in `signal_status' from /usr/local/lib/ruby/1.9.0/irb.rb:147:in `block in eval_input' from /usr/local/lib/ruby/1.9.0/irb.rb:146:in `eval_input' from /usr/local/lib/ruby/1.9.0/irb.rb:70:in `block in start' from /usr/local/lib/ruby/1.9.0/irb.rb:69:in `catch' from /usr/local/lib/ruby/1.9.0/irb.rb:69:in `start' from /usr/local/bin/irb-1.9.0-1-86:12:in `<main>'
すこーぷ
Python でも似た挙動をするものも多いか。
ブロック引数
irb(main):008:0> i = 0 => 0 irb(main):009:0> 3.times{|i|p i} 0 1 2 => 3 irb(main):010:0> i => 2
これは Ruby 1.9 で 0 に。
代入されつつある変数の値
irb(main):004:0> n = [n, 1] => [nil, 1]
スコープを作らない if
irb(main):001:0> if false then n = 1 end => nil irb(main):002:0> n => nil
n は定義されてしまっている。
前置と後置で変わる
if n = 1 then p n end
は OK 。
p n if n = 1
はダメ。
Keyword(s):
References:[FrontPage]