単一の操作でラッパー型の可変数のラップを解除私はいくつかの文字列をラップし、アンラップことができる方法です。私は、一般的なラッパー型を持っている
string s = "ssss";
var wrappedString = s.Wrap().Wrap().Wrap();
string unwrappedString = wrappedString.Unwrap().Unwrap().Unwrap().Unwrap().Unwrap().Unwrap();
は私がstrinに到達するために取得するために複数回のラップを解除する必要があるかを参照してください。内部にg。
私が望むのは、単一ステップ(または一定のステップ数)でアンラッピングを実行できる強く型付けされた汎用操作を記述することです。 便利なツールには、汎用メソッド、ラムダ、メソッドオーバーロードがあります。私は無制限の再帰に使用する固定小数点コンビネータからタイプベースのY結合を構築することについても考えました。再帰でさえ、ステップ/サイクル/反復が必要です。
これは解決できないのですが、C#の型推論ではNP困難な問題(https://blogs.msdn.microsoft.com/ericlippert/2007/03/28/lambda-expressions-vs-anonymous-methods-part-five/参照)を解決できるため、何かを見落としてしまう可能性はまだあります。
・ダウト、各ラッピングレベル( 'アンラップ(のために過負荷を加えることなく、このラップ>ラップされた) 'など)このようなシナリオでは実際の使用方法はありますか? –
Evk
@Evk"各ラッピングレベルのオーバーロード "おそらく対数的なステップ数を使用する方法があります。タプルベースの複数型のリンクリストを逆順にしたい場合など、同様の手法が必要です。 –
C#型システムでは、あなたが望むものはできません。 – Evk