Ошибки PascalABC.NET

Указатель на функцию имеет тип Int32.

Не думаю, что это:

x = 1, y = 1

можно назвать указателем на функцию. Это, кстати, при следующем коде:

Writeln($'x = {x}, y = {y}');

.

Тогда - это баг. Делайте Issue.

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

x должен иметь тип делегата, а y - Int32.

Я не стал делать Issue, так как в том же PascalABC, насколько помню, можно производить вызовы подпрограмм без (). Вот еще пример (в FPC), где вызывается F, без скобочек:

//fpc 3.0.0

program HelloWorld;

procedure F();
begin
    Writeln(1);
end;

begin
    F;
end.

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

Зачем Program?

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

Но в чём смысл последнего кода? Если я правильно понял, то у Вас делегат имеет тип Int32, что является ошибкой. Второй же код - просто определение и вызов метода.

Чтобы показать, что не только в PascalABC.Net вызов подпрограмм можно осуществлять без ().

А смысл то в чём? Аааа, допёр. Вы хотите сказать, что и то и то - вызовы. Понял. Но это - ещё один аргумент в мою пользу: запретить вызов метода без скобочек!

Хорошо. Убедили, я сделаю Issue. Но все же вопрос остается открытым - разработчики не высказали свое мнение.

Разработчики как раз высказали своё мнение, причём не раз. Они против обязательных скобочек, несмотря на множество подобных проблем. Я думаю, сейчас поднаберётся примеров и можно сделать опрос по этому поводу.

В плане обучения - введение такого ограничения позволит избежать вопросов в стиле: Почему здесь происходит вызов подпрограммы, вместо возврата на неё ссылки?

1 лайк

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

[02.03.15] Добавлены операция =>, создающая KeyValuePair, а также функция Dict, создающая словарь: var d := Dict(‘бегемот’=>2,‘крокодил’=>3).

Я, конечно, понимаю, что это было давно, но почему на этот код:

begin
  var d1 := Dict(0 => 0, 1 => 0);
end.

вот такая реакция:

Program4.pas(2) : Встречено ‘>’, а ожидалось выражение

?

Она убрана

Вас понял.

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

Ничего неизвестно об этом. Какого размера файлы?

1 лайк