Но это сбивает с толку. И какой массив получается на выходе? С подмассивами одинаковой длины “отнормированными” по первому? А зачем? Вся фишка массива массивов в том, что у него внутренние массивы разной длины, а так получается, что, в лучшем случае, их дополняет нулями. И что же делать? Инициализировать другими способами можно, но что с этим способом? Уберете его?
ibond у нас ответственный за Intellisense. А где я говорил, что не будем реализовывать?
А может вспомнить, что основная ниша - это обучение и не оглядываться постоянно на Delphi там, где это вредит языку?
Как пример, была такая настольная СУБД - FoxPro. Еще в ДОС-версиях, тогда еще Microsoft и не думал ее приобретать. Кроме совершенно новых и продвинутых инструментов, она содержала в себе все, что было у предшественников - dBASE и FoxBASE, как и PasalABC.NET содержит в себе “наследие предков”. Это было понятно: имелось большое количество старых наработок и надо было дать возможность безболезненного портирования. Потом появились версии Visual FoxPro (VFP в народе), которые по-прежнему тащили в себе груз еще от dBASE - но это оправдывалось тем, что "а вот люди перешли со старых программ на FoxPro/DOS и теперь им надо обеспечить портирование под VFP. Выходили новые версии VFP, впечатленная производительностью, эту СУБД приобрела Microsoft. А старое наследие в языке так и оставалось. И только в последних версиях, когда уже ясно стало, что сохранение “старья” тормозит новые концепции, от него начали избавляться. Да и то в виде полумеры: директивным переключением движка СУБД между разными синтаксисами.
Может, пора бы и в PascalABC.NET кое от чего избавиться, если оно сильно мешает, а не воевать с этими ветряными мельницами? А то может получиться, как старом анекдоте.
Посетитель небольшого кафе делает заказ и в ожидании разглядывает интерьер. Его внимание привлекает большой транспарант: “Война мухам!”. Между тем мухи с немалым энтузиазмом в заведении присутствуют. Посетитель интересуется у официанта, как это соотносится с лозунгом о войне и получает ответ: “Да, война была. Но мы проиграли…”
Не хотелось бы проиграть войну из-за вопроса совместимости чего-то там с какой-то устаревшей Delphi.
Вы сказали что это не ошибка. не_ошибка, в моём понимании, это то что так и задумано, а значит и не должно быть исправлено. Ну ладно, тогда тоже закину в issue.
Нет, это я сказал по поводу разного количества элементов во вложенных массивах.
Модуль Graph3D. Не работает анимация масштабирования при задании параметра времени выполнения. “Ошибка времени выполнения: System.InvalidProgramException: Среда выполнения Common Language Runtime обнаружила недопустимую программу.”
Ошибка действительно не правильная, но приведите пожалуйста код. Из описания словами не понятно.
Пример программы есть в папке “Samples”. Вот этот тоже не работает:
uses Graph3D;
begin
var b := Sphere(Origin,0.2,Colors.red);
var c:=b.AnimScale(3,1);
c.Begin;
end.`
Если вместо " var c:=b.AnimScale(3,1)" написать просто “var c:=b.AnimScale(3)”, то ошибки не будет.
У меня не воспроизводится (ваша программа и все программы из Samples
, содержащие AnimScale
). Возможно это уже исправили в последней версии? Попробуйте обновиться.
intellisence показывает массив целых после Power
begin
var n := 10;
var a := Range(1, n).Select(el -> Power(2, el)).ToArray;
a.Println;
end.
Скрин там
В том то и дело, что версия последняя (3.4 от 01.07.2018) + Microsoft .NET Framework 4.7.1. Ошибка повторяется на двух разных компьютерах.
Попробуйте скачать сейчас и отпишитесь, заработало ли.
да
Да, известная проблема. Ещё не до конца реализовали лямбды для шаблонных функций. А Select
как раз шаблонная, она может менять тип возвращаемого параметра в зависимости от того - какая лямбда.
Из решений на пока что - вижу только:
begin
var n := 10;
var a: array of real := Range(1, n).Select(el -> Power(2, el)).ToArray;
a.Println;
end.
По крайней мере, после этого анализатор кода работает правильно для a
.
Ошибка времени выполнения: System.BadImageFormatException: Была сделана попытка загрузить программу, имеющую неверный формат. (Исключение из HRESULT: 0x8007000B)
begin
var tupl := (1,2,[3,4,5]);
Print(tupl.Item1);
end.
У меня не воспроизводится.
А так работает:
begin
var tupl := new System.Tuple<integer,integer,TypedSet>(1,2,[3,4,5]);
Print(tupl.Item1);
end.
?
Да