Advertisement
Guest User

Untitled

a guest
Jan 9th, 2014
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.96 KB | None | 0 0
  1.     static List<A> PrepareLet<A>(IEnumerable<A> input, int length)
  2.     {
  3.         var inputC = new List<A>(input);
  4.         Assert(inputC.Count == 3, String.Format("Must be length {0}: ", length, inputC));
  5.         return inputC;
  6.     }
  7.    
  8.     public static T Let<T, A>(IEnumerable<A> input, Func<A, A, A, T> handler)
  9.     {
  10.         var inputC = PrepareLet(input, 3);
  11.         return handler(inputC[0], inputC[1], inputC[2]);
  12.     }
  13.    
  14.     public static void Let<A>(IEnumerable<A> input, Action<A, A, A> handler)
  15.     {
  16.         var inputC = PrepareLet(input, 3);
  17.         handler(inputC[0], inputC[1], inputC[2]);
  18.     }
  19.  
  20.     public static T Let<T, A>(IEnumerable<A> input, Func<A, A, T> handler)
  21.     {
  22.         var inputC = PrepareLet(input, 2);
  23.         return handler(inputC[0], inputC[1]);
  24.     }
  25.  
  26.     public static void Let<A>(IEnumerable<A> input, Action<A, A> handler)
  27.     {
  28.         var inputC = PrepareLet(input, 2);
  29.         handler(inputC[0], inputC[1]);
  30.     }
  31.  
  32.     public static T Let<T, A1, A2>(Tuple<A1, A2> input, Func<A1, A2, T> handler)
  33.     {
  34.         return handler(input.Item1, input.Item2);
  35.     }
  36.  
  37.     public static T Let<T, A1, A2, A3>(Tuple<A1, A2, A3> input, Func<A1, A2, A3, T> handler)
  38.     {
  39.         return handler(input.Item1, input.Item2, input.Item3);
  40.     }
  41.  
  42.     public static T Let<T, A1, A2, A3, A4>(Tuple<A1, A2, A3, A4> input, Func<A1, A2, A3, A4, T> handler)
  43.     {
  44.         return handler(input.Item1, input.Item2, input.Item3, input.Item4);
  45.     }
  46.  
  47.     public static void Let<A1, A2>(Tuple<A1, A2> input, Action<A1, A2> handler)
  48.     {
  49.         handler(input.Item1, input.Item2);
  50.     }
  51.  
  52.     public static void Let<A1, A2, A3>(Tuple<A1, A2, A3> input, Action<A1, A2, A3> handler)
  53.     {
  54.         handler(input.Item1, input.Item2, input.Item3);
  55.     }
  56.  
  57.     public static void Let<A1, A2, A3, A4>(Tuple<A1, A2, A3, A4> input, Action<A1, A2, A3, A4> handler)
  58.     {
  59.         handler(input.Item1, input.Item2, input.Item3, input.Item4);
  60.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement