uses ns;
begin end.
namespace ns;
end.
Этот код компилируется.
@ibond, так задумано?
То есть, чтоб неймспейс можно было не подключать через директиву, чтоб он сразу работал.
uses ns;
begin end.
namespace ns;
end.
Этот код компилируется.
@ibond, так задумано?
То есть, чтоб неймспейс можно было не подключать через директиву, чтоб он сразу работал.
@Admin Как насчёт добавить такую функцию к стандартным генераторам последовательностей?
function SeqInf<T>(gen: ()->T): sequence of T;
begin
while true do
yield gen;
end;
function SeqInf<T>(gen: integer->T): sequence of T;
begin
var i := 0;
while true do
begin
yield gen(i);
i += 1;
end;
end;
Не редко на куберфоруме в решениях задач замечал что с такой функцией будет удобнее.
А только что ещё и тут был случай.
SeqGen
для 1 элемента и вызывал .Cycle
.SeqGen
. Но и это костыль.Мне кажется это было бы хорошее дополнение к тем функциям-генераторам последовательностей что есть сейчас.
gen.Repeat не подходит? По индексу не хотелось бы - есть gen.Iterate(x->x+2);
Какие-то загадки… А можно для “особо одаренных” подробнее, gen.Repeat и gen.iterate - в Справке нет их.
Всм SeqGen
? Ну я так и делал (только не Repeat
а Cycle
), но это всё же костыль. Надо вбивать лишний параметр, и в итоге не интуитивно.
А Iterate
откуда взялось? Есть Numerate
, но оно не принимает лямбду.
И - в чём проблема если проиндексированное будет в виде отдельной перегрузки? Почти у всех методов последовательностей есть перегрузки с- и без- индекса.
@Admin а как насчёт того чтоб разрешить несколько автосвойств на 1 строчке:
type
t1=class
auto property X,Y,Z: byte;
end;
begin end.
Они ведь в остальном выглядят как поля, и это должно быть не сложно реализовать…
Дам ссылку на Issue.
type
TClass = class
auto property X: byte := 1;
end;
begin
end.
Хотелось бы поднять тему про инициализацию автосвойств при объявлении. Почему от этого отказались? Ведь, такая инициализация позволит сильнее очистить код конструктора. К примеру, требуется свойствам назначить какие-то изначальные значения. Без инициализации автосвойств при объявлении пришлось бы писать:
type
TClass = class
auto property X: byte;
auto property Y: byte;
auto property Z: byte;
constructor() := (X, Y, Z) := (1, 1, 1);
end;
begin
end.
вместо:
type
TClass = class
auto property X: byte := 1;
auto property Y: byte := 1;
auto property Z: byte := 1;
end;
begin
end.
Обращаясь к C#, следует заметить, что такой функционал уже реализован:
internal class MyClass
{
public int X { get; set; } = 1; // <--
private static void Main()
{
}
}
Еще одним примером может служить VisualBasic.Net:
Module Module1
Public Class Type
Public Property X As Integer = 1 // <--
End Class
Sub Main()
End Sub
End Module
Если у Вас есть примеры других языков, в которых аналогичный функционал есть, то буду рад, если Вы приведёте примеры кода на них.
Ссылки: Автоматические реализуемые свойства в C#, Инициализация автоматически реализуемого свойства в VisualBasic.Net.
@Admin, Вы сказали в Issue:
Давайте-ка я пока закрою это Issue, потому что непонятно, будут ли у нас автосвойства
, теперь делать можно - автосвойства имеются.
В абс есть Робот, но мне нравиться больше кумировский. Т.к. 1) можно удобно самому создавать и менять обстановки, 2) можно создать офф-лайн практикум с автоматической проверкой. В абс такого не нашел, поэтому использую кумир. Но с “паскальными” учениками лучше бы было это делать на абс. Если язык для обучения, а обучение начинается с управления исполнителями, то стоит развивать удобство работы и исполнителями.
На сайте PascalABC.NET есть страничка Программы и алгоритмы для студентов. Там на вторую половину задач, начиная с файлов, нет кода. На самом интересном месте, как говорится. Там и рекурсия, и связные списки, и деревья, и контейнеры, и ООП. Хорошо бы алгоритмы на графах еще, эх мечты. Очень жаль, что нет кода. Особенно в стиле паскаля абц точка нет. Может быть, кому-то не сложно его написать?
Во-первых, можно вот отсюда взять перевод отличной книги Р. Седжвика “Фундаментальные алгоритмы на С++. Алгоритмы на графах”. Да, тексты программ там на С++, но если студент дошел до изучения данного курса, у него должно хватить знаний, чтобы там разобраться. Сами же тексты программ выложены на GitHub.
Во-вторых, можно скачать книгу С. Окулов. Программирование в алгоритмах. 2007 год. 341 стр. PDF. 3.3 Мб., в которой алгоритмы даются на Паскале.
Это Ваше “хорошо бы” умиляет, конечно, но ничего на свете не бывает просто так. Вы можете внести свою лепту в проект, переписав хотя бы часть алгоритмов на PascalABC.NЕТ. А иначе получаются предложения из разряда “я хочу, а вы мне сделайте”.
Здравствуйте. Хотелось бы сворачивания не только регионов, но и типов с методами (процедур/функций). Было бы очень полезным. А то постоянно вручную сворачивать всё это занимает по минуте (а то и больше) каждую загрузку / перезагрузку Intellisense.
Что-то пришла в голову, возможно, глупая, идея:
А что, за годы существования различных редакторов, IDE, и прочих Intellisens’ов никто не догадался эти регионы оформлять не просто названием, но и чем-то вроде такого (псевдокод, не в курсе, как это делать в Паскале, оформляется директивой компилятора, им игнорируется)?
#region REGION_NAME (default: [hide|show])
Суть концепта - при открытии исходника в IDE те регионы, что hide, автоматически сворачиваются. Вроде просто и сердито. Скобку с содержимым разрешить не писать, по умолчанию предполагая (default: show)
.
Можно еще для недавно открытых файлов держать у себя метаинформацию о том, какие регионы были открыты, а какие закрыты на момент закрытия файла. В общем-то, оба варианта имеют право на жизнь.
Лучше уж скрытым символом, чтоб его оставляло если регион закрыт и при открытии IDE автоматически сворачивало. Хотя обычно, если IDE запоминает свёрнутость какого то код - это вроде делается через дополнительные файлы где то типа ProgramFiles.
@Admin я просил ранее, но вы проигнорили… Разберитесь, пожалуйста, с закреплёнными темами.
Надо открепить Закрытую старую тему ошибок, в неё всё равно писать уже никто не может.
А так же закрепить новые темы, на которые заменили старую:
Ну, или если вы передумали насчёт надобности размножить ту тему в несколько под-тем по смыслу - откройте старую. Не хорошо получается когда новичок на форуме не знает куда писать, при чём не из за лени а потому что никто не модерирует форум.
Не надо плодить много тем. Достаточно оставить две темы: ошибки компилятора и ошибки IDE. интеллисенс, отладчик это IDE. Ошибки в справке это недочеты, их надо в замечания и предложения.
Ну, хорошо, давайте так.
Ну и? Сделайте уже хоть что то…
А что сделать-то? Можете сформулировать еще раз. Только без вариантов и обсуждения.