Tbpgr Blog

Employee Experience Engineer tbpgr(てぃーびー) のブログ

Ruby | Method | [] / call

概要

Method#self[*args] -> object
Method#call(*args) -> object
Method#call(*args) { ... } -> object

詳細

メソッドを呼び出します。
[]形式は通常のメソッド呼び出しに近くなるように用意されたものです。

サンプルコード
require 'tbpgr_utils'

class Hoge
  def hoge(msg)
    yield_ret = yield(msg) if block_given?
    "hoge-#{msg}-#{yield_ret}"
  end
end

h = Hoge.new
m = h.method(:hoge)

bulk_puts_eval binding, <<-EOS
m
m['message']
m.call('message')
m.call('message') { |x| x*2 }
EOS

__END__
下記はTbpgrUtils gemの機能
bulk_puts_eval

https://rubygems.org/gems/tbpgr_utils
https://github.com/tbpgr/tbpgr_utils

出力

m                             # => #<Method: Hoge#hoge>
m['message']                  # => "hoge-message-"
m.call('message')             # => "hoge-message-"
m.call('message') { |x| x*2 } # => "hoge-message-messagemessage"