Замечания и предложения

Это глюк IDE. Попробуйте Shift+F9 запускать. Не будет. Или нумерацию добавить в вывод и будет разрыв в разных местах.

Вот от этого меня уже разработчики отучили. Как только скажешь, что какая-то вещь нужна для конкретной задачи - сразу же следует возражение - и тут не могу ничего возразить в ответ - что неправильно решать частные проблемы посредством системных библиотек…

Механизм мемоизации фундаментальный. Его много где можно использовать. И предложенный класс достаточно универсальный и удобный.

Я отнюдь не утверждаю, что это все не нужно. Я лишь советую не напирать на то, что “Для него и делалось”, потому что это выглядит как частное решение.

Есть много фундаментальных вещей. Например, красно-чёрные деревья.

Для подобных вещей необходимо решить следующие вопросы:

  1. В каком модуле их описать
  2. Что ещё в этом модуле будет

Модуль ради одного класса делать - странно

2 сообщения было перемещено в эту тему: Помощь новичкам

У картинки гиперссылка неправильная.

image

uses в коротких программах не очень дружелюбные:

##
uses u1, u2; // Ok
uses u3; // Вторую секцию uses нельзя на уровне синтаксиса

Это issue?

Только одна секция uses возможна в коротких программах. В коротких программах вообще многое ограничено - они же короткие

2 лайка
##
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 имя := выражение

1 лайк

@admin ребят, а что с сайтом?

Да, увидели - исправили. Если еще где есть - пишите

У меня всё ещё показывает, но теперь на строчку ниже.

Не было этого, следовательно, добавлено уже после удаления предыдущего. Стало быть, или дыра есть какая-то в безопасности, или у кого-то постороннего доступ имеется.

1 лайк
  1. Сделайте поддержку тем: далеко не всем нравится светлая тема. И сделать не только выбор уже готовой темы, а возможность изменять каждый её параметр.
  2. Почему невозможно закрыть один единственный файл или целиком весь проект? Или сделайте хотя бы так, чтобы при открытии нового файла или проекта, система предлагала бы закрыть уже существующие.