Ruby 2.7 アドベントカレンダーの23日目の記事です。
Symbol
Symbol#start_with? / #end_with? 追加
Symbol に start_with?
と end_with?
が追加されました。
:hoge.start_with? "ho" #=> true :hoge.end_with? "ge" #=> true :hoge.end_with? "x" #=> false
UnboundMethod
UnboundMethod#bind_call 追加
UnboundMethod#bind(obj).call(...)
を UnboundMethod#bind_call(obj, ...)
と書けるようになったようです。
使ったことないからよくわからない…。
class Hoge def hoge(x, y) x + y end end method = Hoge.instance_method(:hoge) obj = Hoge.new method.bind(obj).call(1, 2) #=> 3 method.bind_call(obj, 1, 2) #=> 3
OptionParser
Did you mean?
オプションを間違って指定した時に "Did you mean?" が出力されるようになりました。
require 'optparse' op = OptionParser.new do |opts| opts.on("--foo", "foo") {|v| } opts.on("--bar", "bar") {|v| } opts.on("--baz", "baz") {|v| } end begin op.parse! rescue OptionParser::InvalidOption => e puts e.to_s end
# 2.6 % ruby test.rb --baa invalid option: --baa # 2.7 % ruby test.rb --baa invalid option: --baa Did you mean? bar baz