概要
追加要件 メソッド一括定義 Kernel#bulk_define_methodsを追加
詳細
追加要件 メソッド一括定義 Kernel#bulk_define_methodsを追加
目的
ユーティリティ的な機能などを作成する際に、既存のクラスをオープンする場合に
一部のクラスにはほとんど実装内容は持たないがメソッド宣言と固定値の返却のみ定義が必要になる場合があります。
例えばActiveSupportのObject#blank?など。
Object#blank?は NilClass、FalseClass、TrueClass、Numericクラスに固定値(true or false)を返却するメソッドを追加しています。
このような際に、実装内容に比べて宣言部ばかり大きくなるため記述が冗長になります。
Kernel#bulk_define_methodsを利用すると1行で設定可能になります。
※もちろん他の目的で利用してもよい
仕様
・bulk_define_methodsに対象クラスリスト、設定メソッド名リスト、設定値リストを渡すと一括定義する
・クラスはClassとArray[Classes]を利用可能。
・メソッド名はStringとSymbolとArray[String or Symbol]を利用可能
・設定値は何でも設定可能
宣言
bulk_define_methods classes, methods, constants
・サンプル
仮にActiveSupportのblank?の実装に利用した場合
bulk_define_methods [NilClass, FalseClass], :blank?, true bulk_define_methods [TrueClass, Numeric], :blank?, false puts nil.blank? # => true puts false.blank? # => true puts true.blank? # => false puts 1.blank? # => false
※詳細はGitHubのREADMEとテストクラスをご確認ください
リリースバージョン
0.0.8