0

すべての出力に特定の文字列を追加する宝石を作成していputsます。ユースケースは次のようになります。

string_to_append = " hello world!"
puts "The web server is running on port 80"
# => The web server is running on port 80 hello world!

これを行う方法がわかりません。疑似コードは次のようになります。

class GemName
  def append
    until 2 < 1
        if puts_is_used == true
            puts string << "hello world!"
        else
            puts ""
        end
    end
  end
end

これを行う方法に関する最善のアプローチについての洞察は非常に高く評価されています。

4

1 に答える 1

4

これは、エイリアシングを使用して簡単に行うことができます。これは、メソッドを装飾するための非常に一般的なイディオムだと思います。

# "open" Kernel module, that's where the `puts` lives.
module Kernel
  # our new puts
  def puts_with_append *args
    new_args = args.map{|a| a + ' hello world'}
    puts_without_append *new_args
  end

  # back up name of old puts
  alias_method :puts_without_append, :puts

  # now set our version as new puts
  alias_method :puts, :puts_with_append
end

puts 'foo'
# >> foo hello world

# it works with multiple parameters correctly
puts 'bar', 'quux'
# >> bar hello world
# >> quux hello world
于 2013-01-08T14:19:18.000 に答える