Ruby2.6アドベントカレンダーの13日目の記事です。
Module
Module#method_defined?
, Module#private_method_defined?
, Module#protected_method_defined?
で継承されたものを含むかどうかを指定可能
https://bugs.ruby-lang.org/issues/14944
メソッドが定義されているかどうかを調べるときに、継承されたものを含むかどうかを第二引数で指定することができるようになりました。
class C def hoge end end C.method_defined?(:hoge) #=> true C.method_defined?(:hoge, true) #=> true C.method_defined?(:hoge, false) #=> true C.method_defined?(:object_id) #=> true C.method_defined?(:object_id, true) #=> true C.method_defined?(:object_id, false) #=> false
この手のやつは最近はキーワード引数にする流れかと思ってたんだけど、普通のオプション引数なんですね。