インスタンス変数を参照したら，また初期化したい


例えば以下のクラスCでsayメソッドを使ったら  
インスタンス変数@dはnilで初期化されています．

このメソッドは３行にわたって書いており，  
もうすこしスマートに書けないかと悩んでいます．

すでに機能的には充足されていますが，  
rubyらしく書くためにはどう工夫すればよいでしょうか

[code]

    class C
      def initialize
        @d = "hello"
      end
      def say
        result = @d
        @d = nil
        result
      end
    end
    
    c = C.new
    c.say #=> hello
    c.say #=> nil
    
[/code]




`tap`を使うと良いと思います。

[code]

    def say
      @d.tap { @d = nil }
    end
    
[/code]




`tap`を使うと良いと思います。

[code]

    def say
      @d.tap { @d = nil }
    end
    
[/code]

