C#で貧者の型クラス(poor man's type class)
今日はScala の implicit parameter は型クラスの一種とはどういうことなのかの例をC#で書いてみます。と言っても、C#には暗黙引数と同等の機能は備わっていないので、明示的に引数を取るしかありません。
型クラス。
public abstract class FlipFlapper<T>
{
public abstract T DoFlipFlap(T x);
}
型クラスを利用する関数。
private static T FlipFlap<T>(T x, FlipFlapper<T> flipFlapper)
{
return flipFlapper.DoFlipFlap(x);
}
型クラスの実体。
public class IntFlipFlapper : FlipFlapper<int>
{
public static IntFlipFlapper Instance = new IntFlipFlapper();
public override int DoFlipFlap(int x)
{
return -x;
}
}
public class StringFlipFlapper : FlipFlapper<string>
{
public static StringFlipFlapper Instance = new StringFlipFlapper();
public override string DoFlipFlap(string x)
{
char[] chars = x.ToCharArray();
Array.Reverse(chars);
return new string(chars);
}
}
型クラスを利用する関数の呼び出し。
FlipFlap(1, IntFlipFlapper.Instance);
FlipFlap("string", StringFlipFlapper.Instance);
毎回明示的に引数を渡さなければならないのは不便です。何とかしてC#で暗黙引数を実現できないか色々考えましたが、難しそうでした。
Author And Source
この問題について(C#で貧者の型クラス(poor man's type class)), 我々は、より多くの情報をここで見つけました https://qiita.com/pizyumi/items/5874aca78a6f0b3aee13著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .