Это я пытаюсь намекнуть на то, что ленивой инициализации в вашем примере не происходит, всё дерево по-прежнему резолвится целиком, даже несмотря на то, что вы что-то где-то обернули в Lazy. И предлагаю подумать, почему так происходит.
var services = new ServiceCollection();
services.AddTransient<IFoo, Foo>();
services.AddTransient<Lazy<IFoo>>();
using var sp = services.BuildServiceProvider();
var foo = sp.GetRequiredService<Lazy<IFoo>>();
Console.WriteLine(foo.IsValueCreated);
interface IFoo;
class Foo : IFoo;
Да не, это в статье примеры топорные. Вот рандомный пример на джабаскрипте:
// A thenable is an object with a `then()` function. The
// below thenable behaves like a promise that fulfills with
// the value `42` after 10ms.
const thenable = {
then: function(onFulfilled) {
setTimeout(() => onFulfilled(42), 10);
}
};
const v = await thenable;
v; // 42
А вот то же самое на C#:
var v = await new Awaitable();
Console.WriteLine(v); // 42
class Awaitable
{
public TaskAwaiter<int> GetAwaiter()
{
return Task.Delay(10).ContinueWith(_ => 42).GetAwaiter();
}
}
Тоже один метод, только называется по-другому. Все вот эти приседания со своими собственными "объектами-awaiter" - это как переизобретение промизов. Можно, иногда нужно, но не часто.
где-то очень замудренный интерфейс сделанный вообще не понятно для кого (привет Anki).
Есть такое. Но основная ценность Anki - и почему есть смысл посидеть, поплеваться, но разобраться в интерфейсе - это алгоритмы интервального повторения. Сколько карточек показывать в день, как скоро их повторять после правильного ответа, а как скоро после неправильного - всё это чертовски важно, чтобы запоминать эффективно.
В примере нет ничего про локализацию и языки, это требование придумал комментатор с Хабра.
Я согласен, что какофония из функций в примере "после" никуда не годится. Но решением является выкинуть данный пример и придумать более подходящий, а не локализация.
Как читатель, вы должны уметь отделять котлеты от мух. Локализация, цикл жизни приложения, рефакторинг - всё это в главе про содержательные имена несущественно.
Помните анекдот про HR, который выбросил в мусорку половину резюме, даже не взглянув, мол, "а зачем нам неудачники?" Тоже вот несправедливый, но какой-никакой критерий отсева.
+100. Очень жаль, что фичу чёрного списка бросили на полпути. Я всё думаю написать userscript, который бы в фоне загружал статьи, проверял автора и при необходимости скрывал ссылки, но пока что лень, несмотря на то, что вляпываюсь очень часто.
Может быть до сих пор просто никто не жаловался? https://news.ycombinator.com/item?id=44884709
Качественные датчики воздуха стоят дорого.
Как альтернатива есть AirGradient за $125 (или $225 если сертифицированный и откалиброванный), open source.
Это я пытаюсь намекнуть на то, что ленивой инициализации в вашем примере не происходит, всё дерево по-прежнему резолвится целиком, даже несмотря на то, что вы что-то где-то обернули в Lazy. И предлагаю подумать, почему так происходит.
А давайте. Возьмите вот такой код:
Что будет выведено в консоль? Почему
True? ;)Могут. Только ваш Apache-проект должен линковаться с LGPL-кодом динамически, либо "заразиться" и перейти на *GPL, иначе вы всё ещё нарушаете лицензию.
Нет, не достаточно: у FFmpeg и rockchip-mpp несовместимые лицензии (LGPL и Apache).
Sublime Text же!
Да не, это в статье примеры топорные. Вот рандомный пример на джабаскрипте:
А вот то же самое на C#:
Тоже один метод, только называется по-другому. Все вот эти приседания со своими собственными "объектами-awaiter" - это как переизобретение промизов. Можно, иногда нужно, но не часто.
С таким полётом фантазии не забывайте носить шапочку из фольги.
Есть такое. Но основная ценность Anki - и почему есть смысл посидеть, поплеваться, но разобраться в интерфейсе - это алгоритмы интервального повторения. Сколько карточек показывать в день, как скоро их повторять после правильного ответа, а как скоро после неправильного - всё это чертовски важно, чтобы запоминать эффективно.
Написали. Не в стандартной библиотеке, но есть несколько функциональных либ для .NET.
Но вообще Pipe/Select/Map элементарно пишется самостоятельно. Да, нужно написать, но ведь один раз всего.
Но ведь уже есть System.Data.DbType?
В примере нет ничего про локализацию и языки, это требование придумал комментатор с Хабра.
Я согласен, что какофония из функций в примере "после" никуда не годится. Но решением является выкинуть данный пример и придумать более подходящий, а не локализация.
Как читатель, вы должны уметь отделять котлеты от мух. Локализация, цикл жизни приложения, рефакторинг - всё это в главе про содержательные имена несущественно.
Одни вот уже дозаменялись, кто рискнёт следующий? :)
Нет, конечно. Extension operators - это не "случайно так получилось, что теперь с этим делать?", а фича.
Не работает это, компилятор резолвит
"".IsNullOrEmptyкак method group.Помните анекдот про HR, который выбросил в мусорку половину резюме, даже не взглянув, мол, "а зачем нам неудачники?" Тоже вот несправедливый, но какой-никакой критерий отсева.
+100. Очень жаль, что фичу чёрного списка бросили на полпути. Я всё думаю написать userscript, который бы в фоне загружал статьи, проверял автора и при необходимости скрывал ссылки, но пока что лень, несмотря на то, что вляпываюсь очень часто.
Он там уже лежит :)