uses
в коротких программах не очень дружелюбные:
##
uses u1, u2; // Ok
uses u3; // Вторую секцию uses нельзя на уровне синтаксиса
Это issue?
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 имя := выражение
Да, увидели - исправили. Если еще где есть - пишите
У меня всё ещё показывает, но теперь на строчку ниже.
Не было этого, следовательно, добавлено уже после удаления предыдущего. Стало быть, или дыра есть какая-то в безопасности, или у кого-то постороннего доступ имеется.
Вы не первый с этой идеей. Сто раз уже отвечали, что с IDE большие проблемы. Присоединяйтесь к проекту и делайте… Вам потом спасибо скажут все, желающие темные темы.
Ещё справка хорошая нужна…
uses Robot;
begin
Task('cc5');
var Зигзаг := Right*13 + Down + Left*13 + Down;
Run(Зигзаг*4);
end.
попробовал это с помощью справки разобрать и проблемы…
Не нашёл в справке процедуру Run. Операцию возведения в степень ** тоже… Может справку дополнить.
ИМО описания Run
в анализаторе кода вполне достаточно.
Ну и реализации, которую можно увидеть, Ctrl+тыкнув на него.
**
это операция. В приоритете операций она есть, но в разделе арифметических операций стОит всё же указать. @Admin?
Откуда про это вообще можно узнать как не из справки? Язык крут, но что он умеет? Понятно что допиливать язык интереснее чем писать справку, но куда без неё. Вы придумали, а мы телепаты? В справке нужны примеры. Детям очень нужны…
Подобный вопрос возникал когда я одному учителю показал ##. Ему понравилось отсутствие begin-end, но он не смог найти инфу в справке и в итоге (пока) отказался от продвижения этого в школе. Кроме того, константы всё ещё нельзя определять внутри блока, что не позволяет учителям и школьникам быстро перейти с доисторического паскаля на современный.