Читать дальше →
Александр Фомин @Sane
Пользователь
Аппликация Expressions
4 мин
4.7KДобрый день.
Просматривая недавно чужой код, наткнулся на довольно интересную задачу о IQueryable и Expession trees. Надеюсь, решение будет кому-нибудь полезно.
Задача заключается в том, чтобы повторно использовать некоторый Expression внутри другого Expression, например, у нас есть некий f:
И мы бы хотели использовать этот f внтури другого expression, например так:
Причем необходимо, чтобы результирующий expression был «чистым», т.е. пригодным для использования внутри IQueryable (без скомпилированных функций и т.п.)
Просматривая недавно чужой код, наткнулся на довольно интересную задачу о IQueryable и Expession trees. Надеюсь, решение будет кому-нибудь полезно.
Задача заключается в том, чтобы повторно использовать некоторый Expression внутри другого Expression, например, у нас есть некий f:
Expression<Func<int, int, int>> f = (a, b) => a + b;
И мы бы хотели использовать этот f внтури другого expression, например так:
Expression<Func<int, int, int, int>> g = (a, b, c) => f(a+b,b)*c;
Причем необходимо, чтобы результирующий expression был «чистым», т.е. пригодным для использования внутри IQueryable (без скомпилированных функций и т.п.)
+31
+6
Еще одна причина, почему структуры — это плохо
3 мин
3.4KСтолкнулся на работе с интересной точкой зрения. В проекте все мало-мальские data transfer objects сделаны структурами. На вопрос, зачем так было сделано, получил ответ, что таким образом данные защищаются от изменений. С одной стороны, да, звучит, в принципе, логично, любые методы получают только копию и не в силах ничего подменить.
+13
Экология программирования
3 мин
4.5KРечь не пойдет о пользе для лесов Бразилии перехода на электронный документооборот или выключении Num lock для экономии электроэнергии. Я хочу поговорить об «экологии» как более широком (или же наоборот, более специализированном) понятии, как взаимодействии разработчика со средой разработки в широком смысле этого слова.
+39
(Быстрый и простой вопрос) Если date — это System.DateTime, date.AddDay(1) меняет значение date?
1 мин
682-3
Школьная задачка по физике
1 мин
8.6KПривет,
Предлагаю на ваш суд следующую задачку на школьный курс физики.
На весы поместили сосуд с водой, в воду положили деревянный брусок. Брусок плавает на поверхности. Уровень воды в сосуде, естествено, поднялся. После брусок вынули и в сосуд долили воды до уровня, который был в сосуде вместе с бруском. В каком случае весы покажут больший вес — с плавающим бруском или с долитой водой?
Предлагаю на ваш суд следующую задачку на школьный курс физики.
На весы поместили сосуд с водой, в воду положили деревянный брусок. Брусок плавает на поверхности. Уровень воды в сосуде, естествено, поднялся. После брусок вынули и в сосуд долили воды до уровня, который был в сосуде вместе с бруском. В каком случае весы покажут больший вес — с плавающим бруском или с долитой водой?
-17
0
Expressions в C# — impress yourself!
9 мин
106K.NET 4.0 уже не за горами и принесет кучу всего нового, нужного и не очень, крутого и суперкрутого. Однако и в старом добром .NET 3.5 есть много разных интересных фич, которые не используются в повседенвной работе, но иногда здорово облегчают жизнь разработчикам. Одна из таких замечательных штук — это Expressions.
+27
[Перевод] Я все еще не просек F#
2 мин
2.1KПеревод
Я думаю, что Microsoft пытается продать нам F# как что-то новое и крутое, но у меня серьезные проблемы с пониманием приемуществ F# перед C#.
+1
Трехсторонняя монетка
1 мин
2.9KПредположим, у нас есть три варината, среди которых мы хотим выбрать один случайным образом. Еще у нас есть монетка. Как с помощью подбрасывания монетки выбрать один вариант из трех случайным образом с одинаковой вероятностью? Каково мат.ожидание количество подбрасывания монеток? Сколько раз придется бросить монетку в худшем случае?
+4
Открыть сейф
1 мин
1.9KПривет.
Хочу рассказать вам об одной задаче, которая занимает меня уже очень продолжительное время. Сразу хочу сказать, что я не знаю ее решения (чтобы не превращать топик в очередной топик зла). Также я не встречал задач, подобной этой, в интернете, хотя вполне допускаю, что первый же коммент будет со ссылкой на решение.
Хочу рассказать вам об одной задаче, которая занимает меня уже очень продолжительное время. Сразу хочу сказать, что я не знаю ее решения (чтобы не превращать топик в очередной топик зла). Также я не встречал задач, подобной этой, в интернете, хотя вполне допускаю, что первый же коммент будет со ссылкой на решение.
+16
Метапрограммирование в C++
5 мин
40KМетапрограммирование — это «программирование программ», то есть написание некой промежуточной программы, результатом которой будет некая часть другой программы. Самый простой пример метапрограммирования — это шаблоны C++. Вместо написания десяти одинаковых функций для разных типов, мы пишем шаблон, и компилятор сам соберет нам эти десять функций.
+59
Анонимные типы за пределами функции
2 мин
12KАнонимные типы — очень приятное расширение C#, появившееся в версии 3.0. С помощью анонимных типов мы можем налету создать объект-хранилище и наполнить его данными.
Основное применение анонимных типов — это, конечно, LINQ. Фактически, они и были созданы для него (вообще говоря, все нововведения C# 3.0 были сделаны для LINQ, за исключением, пожалуй, частичных методов).
Основное применение анонимных типов — это, конечно, LINQ. Фактически, они и были созданы для него (вообще говоря, все нововведения C# 3.0 были сделаны для LINQ, за исключением, пожалуй, частичных методов).
var o = new {Bar=2, Foo="string"};
+17
Замыкания в C#
2 мин
63KПеред прочтением статьи, ответьте на следующий вопрос — что будет напечатано, после исполнения следующего кода?
P p = Console.WriteLine; // P объявлен как delegate void P();
foreach (var i in new [] { 1, 2, 3, 4 }) {
p += () => Console.Write(i);
}
p();
P p = Console.WriteLine; // P объявлен как delegate void P();
foreach (var i in new [] { 1, 2, 3, 4 }) {
p += () => Console.Write(i);
}
p();
+41
Информация
- В рейтинге
- Не участвует
- Откуда
- Минская обл., Беларусь
- Дата рождения
- Зарегистрирован
- Активность