Ruby2.1 変更点メモ

変更点中で、個人的に注意するところだけをメモ


キーワード引数


キーワード引数を必須にできるようになった


def something(x:, y:)
end

something
# => ArgumentError: missing keywords: x, y

Arrayにto_hがついた


 x = [[:id, 1], [:name, "foo"]]
x.to_h
# => {:id=>1, :name=>"foo"}

Timeout.timeout


Timeout.timeoutのブロック中でrescue Exceptionできるようになった
※一定時間内で終わらなかった場合にTimeout::Errorをraiseする機能でTimeout.timeout(1) {}で1秒以内に終わらなかった場合はTimeout::Errorがraiseされる


require 'timeout'
begin
Timeout.timeout(1) do
begin
sleep 2
rescue Exception
puts "timeout block"
end
end
rescue Exception
puts "Exception!!"
end

# Ruby 2.0の場合
# => "timeout block"
# Ruby 2.1の場合
# => Exception!!

Numeric#step


ちょっと見やすくできるようになった


0.step(by: 5, to: 20){|i| puts i }

同じコードをRuby2.0でやる場合


0.step(20, 5){|i| puts i}

lambda


lambda中でreturnできるようになった


def call_with_yield
yield
end

def test
call_with_yield(&lambda {return "hello from lambda"})
"hello from method"
end

test

# Ruby 2.0
# => hello from lambda
# Ruby 2.1
# => hello from method

他にも


Process.setproctitleでプロセスタイトルを設定できたり、
GC周りが大きく変わっていたり、
String#scrubだったり、
refineが警告でなくなったり、、、


参考サイト


http://globaldev.co.uk/2014/05/ruby-2-1-in-detail/

関連記事
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。