C# の例(16) (タプル(2))
UnfoldL もタプルを使って書き直します。
private static (Func<bool> next, Func<U> getCurrent, Action<U> setCurrent) UnfoldL<T, U>(Func<T, (U, T)> next, T init) { T src = init; U dst = default(U); bool next_() { (dst, src) = next(src); return src != null; } U getCurrent() { return dst; } void setCurrent(U val) { } return (next_, getCurrent, setCurrent); }
それを呼び出している IterateServer も書き換えます。
public static string IterateServer() { LongDecimal number = new LongDecimal(); LongDecimal square_difference = new LongDecimal(3); (LongDecimal, LongDecimal, int) init_numbers = (number, square_difference, 0); return new LongDecimal(Take(count, UnfoldL(GetNextDecimalDigitAndNumbers, init_numbers))).Print(); }