{"id":1185,"date":"2008-01-28T02:52:05","date_gmt":"2008-01-27T17:52:05","guid":{"rendered":"http:\/\/blog.tksk.net\/?p=1185"},"modified":"2008-01-28T03:26:52","modified_gmt":"2008-01-27T18:26:52","slug":"%e8%b6%85%e3%82%a8%e3%83%83%e3%82%b8%e3%81%8c%e7%ab%8b%e3%81%a3%e3%81%a6%e3%82%8b%e3%82%88%e3%80%81%e5%80%8b%e4%ba%ba%e7%9a%84%e3%81%ab","status":"publish","type":"post","link":"https:\/\/blog.tksk.net\/?p=1185","title":{"rendered":"\u8d85\u30a8\u30c3\u30b8\u304c\u7acb\u3063\u3066\u308b\u3088\u3001\u500b\u4eba\u7684\u306b"},"content":{"rendered":"<p>\u5148\u306bFunc&lt;T,U&gt;\u306e\u62e1\u5f35\u30e1\u30bd\u30c3\u30c9\u306e\u5b9a\u7fa9\u3068\u5b9f\u88c5\u3002\u3053\u306e\u4e0b\u306e\u5229\u7528\u4f8b\u304b\u3089\u898b\u305f\u307b\u3046\u304c\u308f\u304b\u308a\u3084\u3059\u3044\u304b\u3082\u3002<\/p>\n<blockquote><p>public static class FuncUtils<br \/>\n{<br \/>\n\u00a0\u00a0\u00a0 public static Func&lt;TSource, TResult&gt; Compose&lt;TSource, TResult&gt;(<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 this Func&lt;TSource, int&gt; funcSelector,<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 params Func&lt;TSource, TResult&gt;[] functionCandidates)<br \/>\n\u00a0\u00a0\u00a0 {<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Expression&lt;Func&lt;TSource, TResult&gt;&gt; ret = t0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 =&gt; functionCandidates[funcSelector(t0)](t0);\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 return ret.Compile();<br \/>\n\u00a0\u00a0\u00a0 }<br \/>\n}<\/p><\/blockquote>\n<p>\u3068\u304b\u3084\u3063\u3066\u304a\u3044\u3066\u3001<\/p>\n<blockquote><p>Func&lt;int, string&gt; fNum = n =&gt; n.ToString();<br \/>\nFunc&lt;int, string&gt; fFizz = n =&gt; &#8220;Fizz&#8221;;<br \/>\nFunc&lt;int, string&gt; fBuzz = n =&gt; &#8220;Buzz&#8221;;<br \/>\nFunc&lt;int, string&gt; fFizzBuzz = n =&gt; &#8220;FizzBuzz&#8221;;<\/p>\n<p>Func&lt;int, int&gt; selector = n<br \/>\n\u00a0\u00a0\u00a0 =&gt; (n % 15 == 0) ? 3<br \/>\n\u00a0\u00a0\u00a0 : (n % 5 == 0) ? 2<br \/>\n\u00a0\u00a0\u00a0 : (n % 3 == 0) ? 1<br \/>\n\u00a0\u00a0\u00a0 : 0;<\/p>\n<p>var fizzbuzz = selector.Compose(fNum, fFizz, fBuzz, fFizzBuzz);<\/p>\n<p>Enumerable.Range(1, 100).ToList().ForEach(n<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 =&gt; Console.WriteLine(fizzbuzz(n)));<\/p><\/blockquote>\n<p>\u3046\u306fw \u30ad\u30bf\u30b3\u30ec\uff57ww<\/p>\n<p>\u3042\u3001Fizz Buzz \u554f\u984c\u3092\u3084\u3084\u3053\u3057\u304f\u89e3\u3053\u3046\u3068\u601d\u3063\u305f\u3060\u3051\u3067\u3059\u3002<\/p>\n<p>Fizz Buzz &#8211; Wikipedia<br \/>\n<a href=\"http:\/\/ja.wikipedia.org\/wiki\/Fizz_Buzz\">http:\/\/ja.wikipedia.org\/wiki\/Fizz_Buzz<\/a><\/p>\n<p>\u4e00\u5fdc\u89e3\u8aac\u3057\u3066\u304a\u304f\u3068\u3001Combine() \u306f\u3001<\/p>\n<blockquote><p>\u300c\u3042\u308b\u5f15\u6570\u3092\u53d6\u308a\u3001\u305d\u308c\u3092\u5143\u306b\u305d\u306e\u5f15\u6570\u3092\u6e21\u3059\u3079\u304d\u4ed6\u306e\u30e1\u30bd\u30c3\u30c9\u3092\u6c7a\u5b9a\u3057\u3066\u7d50\u679c\u3092\u5f97\u308b\u3088\u3046\u306a\u30e1\u30bd\u30c3\u30c9\u3092\u751f\u6210\u3059\u308b\u300d\u30e1\u30bd\u30c3\u30c9<\/p><\/blockquote>\n<p>\u308f\u304b\u3063\u305f?w \u4ffa\u304c\u8aad\u3093\u3067\u308b\u7acb\u5834\u3060\u3063\u305f\u3089\u3001\u305f\u3076\u3093\u7406\u89e3\u4e0d\u80fd\u306a\u306e\u3067 FizzBuzz \u3067\u8aac\u660e\u3059\u308b\u3068\u3001<\/p>\n<blockquote><p>\u300c\u3042\u308b\u5f15\u6570(int)\u3092\u53d6\u308a\u3001\u305d\u308c\u3092\u5143\u306b\u305d\u306e\u5f15\u6570(int)\u3092\u6e21\u3059\u3079\u304d\u4ed6\u306e\u30e1\u30bd\u30c3\u30c9(int \u3092\u300c\u305d\u306e\u307e\u307e\u300d\u3068\u304b&#8221;Fizz&#8221;\u3068\u304b&#8221;Buzz&#8221;\u3068\u304b\u306b\u5909\u63db\u3059\u308b)\u3092\u6c7a\u5b9a\u3057\u3066\u7d50\u679c\u3092\u5f97\u308b\u3088\u3046\u306a\u30e1\u30bd\u30c3\u30c9(fizzbuzz)\u3092\u751f\u6210\u3059\u308b\u300d\u30e1\u30bd\u30c3\u30c9<\/p><\/blockquote>\n<p>\u307e\u3042\u3001\u305d\u3093\u306a\u304b\u3093\u3058\u3002\u30de\u30c8\u30ea\u30e7\u30fc\u30b7\u30ab!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u5148\u306bFunc&lt;T,U&gt;\u306e\u62e1\u5f35\u30e1\u30bd\u30c3\u30c9\u306e\u5b9a\u7fa9\u3068\u5b9f\u88c5\u3002\u3053\u306e\u4e0b\u306e\u5229\u7528\u4f8b\u304b\u3089\u898b\u305f\u307b\u3046\u304c\u308f\u304b\u308a\u3084\u3059\u3044\u304b\u3082\u3002 public static class FuncUtils { \u00a0\u00a0\u00a0 public static Func&#038; [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[],"_links":{"self":[{"href":"https:\/\/blog.tksk.net\/index.php?rest_route=\/wp\/v2\/posts\/1185"}],"collection":[{"href":"https:\/\/blog.tksk.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.tksk.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.tksk.net\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.tksk.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1185"}],"version-history":[{"count":0,"href":"https:\/\/blog.tksk.net\/index.php?rest_route=\/wp\/v2\/posts\/1185\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.tksk.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1185"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.tksk.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1185"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.tksk.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1185"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}