いくつかの便利な util メソッドを使用したいと思います。特に、コントラクト (つまり implement )Enumerable#to_a
を満たすが、 を含まないオブジェクトについて。Enumerable
each
Enumerable
私はこれがうまくいくように見えることを理解しました:
Enumerable.instance_method(:to_a).bind(obj).call
しかし、これは非常に長文で、Rubyesque ではないようです。これを行うためのより良い/よりクリーンな/より高速な方法はありますか? 意図しない結果を避けるために、基になるオブジェクトを変更しないことをお勧めします。
基本的に、私はjavascriptのapply
またはcall
.
編集:これに対する私の動機は本質的にカプセル化です:私が書いていない、制御していない、深く理解する必要のないクラスのオブジェクトに対してこれを行いたいです。独自のものを持つことにひどく反応するかもしれませんメソッドは、一般的な実装に置き換えられる可能性があります。ほとんどの場合、Enumerable を含めるだけで機能することはわかっていますが、うまくいかない場合はデバッグが面倒になる可能性があるため、それほど侵略的ではなく mixin の利点を得る簡単な方法があれば、それを希望します。