Это глюк IDE. Попробуйте Shift+F9 запускать. Не будет. Или нумерацию добавить в вывод и будет разрыв в разных местах.
Вот от этого меня уже разработчики отучили. Как только скажешь, что какая-то вещь нужна для конкретной задачи - сразу же следует возражение - и тут не могу ничего возразить в ответ - что неправильно решать частные проблемы посредством системных библиотек…
Механизм мемоизации фундаментальный. Его много где можно использовать. И предложенный класс достаточно универсальный и удобный.
Я отнюдь не утверждаю, что это все не нужно. Я лишь советую не напирать на то, что “Для него и делалось”, потому что это выглядит как частное решение.
Есть много фундаментальных вещей. Например, красно-чёрные деревья.
Для подобных вещей необходимо решить следующие вопросы:
- В каком модуле их описать
- Что ещё в этом модуле будет
Модуль ради одного класса делать - странно
У картинки гиперссылка неправильная.
uses
в коротких программах не очень дружелюбные:
##
uses u1, u2; // Ok
uses u3; // Вторую секцию uses нельзя на уровне синтаксиса
Это issue?
Только одна секция uses возможна в коротких программах. В коротких программах вообще многое ограничено - они же короткие
##
var comments := '{~} //~'#10' (*~*)'.ToWords
.Select(w->w.Split(|'~'|,2))
.ToDictionary(
\(key, value) -> key,
\(key, value) -> value
);
Тут выдаёт 2 лишних предупреждения. По моему предупреждения не_использованных параметров не должны выдаваться, как и в случае без \
.
F1 открывает справку msdn не для той версии .Net .
Я сам заметил на DateTime.TryParseExact
: Если поставить на него курсор и нажать F1 - откроется страница с документацией по .Net5.0, в которой у этого метода совершенно не те же перегрузки что в .Net Framework.
@Admin Компилятор разрешает использовать операторные скобки в короткой форме описания процедуры. Это так и задумано?
##
// ОК?
procedure p := begin exit end;
// Правильная ошибка: "Встречено 'begin', а ожидалось выражение"
function f := begin exit end;
Это в первую очередь можно чтоб такой синтаксис был доступен:
##
procedure p1 :=
try
except
end;
procedure p2 :=
lock nil do
begin
end;
Компилятору не важно какой из типов операторных скобок использован в качестве тела - try-end
, begin-end
, или даже одиночный оператор как :=
или lock
.
begin-end
можно запретить отдельно на уровне семантики но… Зачем? ИМО он там просто не мешает.
Наоборот, было бы замечательно если бы поведение функций тут привели к тому что работает в процедурах
function f1 {: integer} :=
lock nil do
begin
var i := 5;
Result := i;
end;
Ну или хотя бы lock
-выражение по аналогии с if
-выражением… Я уже давно прошу, потому что это сделало бы код значительно читабельнее чем это:
function f1: integer;
begin
lock nil do
begin
var i := 5;
Result := i;
end;
end;
Формат короткого описания процедур - procedure имя := оператор
Так что да - вполне - разрешает. Странно конечно так писать.
У функций - другое дело:
function имя := выражение
Да, увидели - исправили. Если еще где есть - пишите
У меня всё ещё показывает, но теперь на строчку ниже.
Не было этого, следовательно, добавлено уже после удаления предыдущего. Стало быть, или дыра есть какая-то в безопасности, или у кого-то постороннего доступ имеется.
- Сделайте поддержку тем: далеко не всем нравится светлая тема. И сделать не только выбор уже готовой темы, а возможность изменять каждый её параметр.
- Почему невозможно закрыть один единственный файл или целиком весь проект? Или сделайте хотя бы так, чтобы при открытии нового файла или проекта, система предлагала бы закрыть уже существующие.