私のパッケージMomocsのS3オブジェクトを検証する方法を探しています。S3の柔軟性とS4の表現チェックを組み合わせることはできますか?
以前のバージョンのパッケージはS4を使用して書かれていましたが、柔軟性のために私はS3に戻っていました。なぜなら私は本当に多重継承を必要としないからです。etc.。この変更の主なコストは、実際にはS4表現/有効性チェックを失っていました。
私の問題は次のとおりです。たとえば、既存のメソッドを拡張しようとするか、オブジェクト構造を操作するなど、S3オブジェクトの誤って「無効化」を防ぐにはどうすればよいですか?
私はすでにvalidate
という関数を書いていますが、これまでのところ、重要なステップ、一般にオブジェクトをクラスから別のものに変換する前に検証しています。
私の質問は:私は私のケーキを持っていると(S3の柔軟性とS4表現のチェック)それを食べるために
- したいですか?その場合、私の
validate
関数をパッケージのすべてのメソッドに追加する必要がありますか? - など、S3の上にスマートな方法があります。「特定のクラスのオブジェクトに対して何かを行うときはいつでも、
validate
関数を呼び出します。
私はすでに、このような[もの](https://github.com/vbonhomme/Momocs/blob/master/R/を持っていますcl-validate.R)しかし、どこにでも追加するのを避けることができるかどうかを知りたいのですが。 'print'でコーニングするのはとても良いトリックです! –
@VincentBonhomme S3対S4のトレードオフです。 S3は文字どおりクラス属性から送出されるため、手動で検証する必要があります。あらゆる種類の検証のための他のインフラストラクチャを提供していません。 – Thomas