Re[7]: оператор ?. не работает с option
От: Uriel Россия  
Дата: 14.12.11 12:17
Оценка:
Здравствуйте, Jack128, Вы писали:

J>Здравствуйте, Uriel, Вы писали:


U>>А IEnumerable<T> навеяно реализацией Option'ов в Scala, где их можно пользовать в конструкции for.

U>>Ну и к тому же очень удобно иногда впихивать операции над Option'ами в портянку вызовов LINQ, a-la:
U>>
U>>public Option<T> Foo(Bar input);

U>>IEnumerable<T> foo = SomeCollection.SelectMany(_ => Foo(_));
U>>


J>Не лучше ли такой метод использовать:

J>IEnumerable<TResult> Choose<TSource, TResult>(this IEnumerable<TSource> source, Func<TSource, Option<TResult>> selector) { return source.Select(selector).Where(Option.IsSame); }
J>?
J>Ну и вообще в качестве примера http://msdn.microsoft.com/en-us/library/ee370544.aspx

Можно и такой. Не думаю, что это принципиально что-то изменит. По большому счёту, вся эта пляска с IEnumerable<T> была только ради возможности использования Option'ов в foreach. Которая, в свою очередь, осталась привычкой после изучения Scala. Все остальные прелести LINQ'а уже чуть позже нашлись.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.