Ruby で一連の 1 行メソッドを記述するより簡潔な方法はありますか?
概要
場合によっては、次のようないくつかのメソッドを作成することになります。
module XyzGateway
module Defaults
def pull_sample asynch=true
'N/A'
end
def is_pull_available?
false
end
def is_push_available?
true
end
def connect params
logger.debug "Invalid gateway(#{self.id}), could not resolve its type. #{ap self}"
end
def gateway_init
end
def disconnect
end
end
end
このような場合にこれらの def キーワードと end キーワードを回避する方法を探しているだけですが、何か方法はありますか?上記の私の場合、これらはデフォルトの動作であり、これらの def, end を回避できれば幸いです。
編集:はい、実際にはこれらすべてにXyzGateway::Defaultsモジュールがあります。
解決策
これらを回避するには、define_method を使用する必要があります。
define_method :is_pull_available? { false }
ただし、コードを短縮することだけが目的の場合は、メソッド全体を 1 行にまとめることができます。これは、非常に短いメソッドの場合はそれほど悪くはありません (ここでの 4 番目のメソッドはおそらく少し長すぎるため、このように要約すると読みやすさが損なわれます)。 IMO):
def pull_sample(asynch = true); 'N/A'; end
def is_pull_available?; false; end
def is_push_available?; true; end
def connect params; logger.debug "Invalid gateway(#{self.id}), could not resolve its type. #{ap self}"; end
def gateway_init; end
def disconnect; end