私がやりたいことは、ブロック内のすべてのメソッドの結果を取得する (またはブロック内のすべてのメソッドを呼び出す) メソッドを定義し、結果の文字列を返すことです...
例えば:
def a_method(&block)
## build a string by calling each of the blocks methods
end
def brackets(str)
'('+str+')'
end
a_method do
brackets "foo"
brackets "bar"
end
# desired output => (foo)(bar)
を入れてみyield
ましたa_method
が、予想通り、ブロックから最後に評価された式 (この場合は(bar)
) を返すだけです。
ブロック内の呼び出しから文字列を作成する方法を調べましたが、何も見つかりません。これは非常に一般的な手法だと思っていたでしょう..誰かがその方法を説明できますか?