Версия PascalABC.NET 3.4

Начните

Ну хорошо, так а что по вопросу то? Ваша реализация поидее работает на много медленнее, чем если нормальный finally использовать…

А, странно, она уже есть… А поиск не нашёл. @Gleb перенесите пожалуйста.

В каком состоянии находится static?

Куда?

туда. Есть же выше ссылка.

Ну так всё же, @Admin, @ibond , как насчёт ответить на вопрос про finally?

1 лайк

В match разрешает и ставить и не_ставить var:

begin
  match 0 with
    real(r): ;
    byte(var b): ;
  end;
end.

Но при этом не разрешает Не ставить переменную:

begin
  match 0 with
    integer: writeln('0 это integer');//ошибка
  end;
end.

Что из этого так и задумано, а что недоработка?

Так и задумано

А почему запрещено не создавать переменную? Ведь не всегда надо делать это преобразование, бывают случаи когда достаточно знать тип переменной. Это разрешено:

try
except
  on ArgumentException do writeln('неправильные аргументы');
  on e: Exception do writeln(e);
end;

Можно предположить, что разработчики делали match-with с оглядкой на switch (для типов) из C#. Тем более, для проверки соответствия типов можно пользоваться оператором is. Хотя, я с Вами согласен, что снятие запрета может сделать код более компактным.

Ну так а зачем тогда запрещать размерные ограничители?

Для ваших целей используйте if a is B

Мы уже закрыли эту тему. Все аргументы мои были размещены ранее. Тем более, в данном случае (ограничений) запрет в плане краткости кода никому не навредит. Не вижу смысла поднимать этот вопрос.

Больше недели (с 11 числа) нету обновлений, снова готовится что то большое?

2 сообщения перенесены в тему Болталка PascalABC.NET

Нет. У нас есть периоды затишья. У нас есть основная работа.

Основные обновления прошли летом - вряд ли стоит ждать больших обновлений в течение учебного года.

Но какие-то ошибки и какие-то улучшения, несомненно будут исправляться и реализовываться.

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

2 лайка

Вроде на это вопрос Ulysses ответил

@Admin компиляция командной строкой зачем то в некоторых случаях вызывает System.Console.ReadKey из метода PascalABCCompiler.ConsoleComliler.CompileAssembly. При этом если перенаправить ввод - получаем ошибку:

Можете, пожалуйста, посмотреть зачем оно там? Зачем вообще консольному компилятору ожидать какого то нажатия клавиш?

А, точно, это при возникновении ошибки компиляции… Можете тогда заменить ReadKey на Read или что то типо него, чтоб не было зависания при запуске консольного компилятора с перенаправленным выводом? Если сейчас не перенаправлять ввод - получаем просто зависание.