Замечания и предложения


#1106

gen.Repeat не подходит? По индексу не хотелось бы - есть gen.Iterate(x->x+2);


#1107

Какие-то загадки… А можно для “особо одаренных” подробнее, gen.Repeat и gen.iterate - в Справке нет их.


#1108

Всм SeqGen? Ну я так и делал (только не Repeat а Cycle), но это всё же костыль. Надо вбивать лишний параметр, и в итоге не интуитивно.

А Iterate откуда взялось? Есть Numerate, но оно не принимает лямбду.

И - в чём проблема если проиндексированное будет в виде отдельной перегрузки? Почти у всех методов последовательностей есть перегрузки с- и без- индекса.


#1109

@Admin а как насчёт того чтоб разрешить несколько автосвойств на 1 строчке:

type
  t1=class
    auto property X,Y,Z: byte;
  end;

begin end.

Они ведь в остальном выглядят как поля, и это должно быть не сложно реализовать…


#1110

Дам ссылку на Issue.


#1112
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, потому что непонятно, будут ли у нас автосвойства

, теперь делать можно - автосвойства имеются. :wink:


#1113

В абс есть Робот, но мне нравиться больше кумировский. Т.к. 1) можно удобно самому создавать и менять обстановки, 2) можно создать офф-лайн практикум с автоматической проверкой. В абс такого не нашел, поэтому использую кумир. Но с “паскальными” учениками лучше бы было это делать на абс. Если язык для обучения, а обучение начинается с управления исполнителями, то стоит развивать удобство работы и исполнителями.


#1114

На сайте PascalABC.NET есть страничка Программы и алгоритмы для студентов. Там на вторую половину задач, начиная с файлов, нет кода. На самом интересном месте, как говорится. Там и рекурсия, и связные списки, и деревья, и контейнеры, и ООП. Хорошо бы алгоритмы на графах еще, эх мечты. Очень жаль, что нет кода. Особенно в стиле паскаля абц точка нет. Может быть, кому-то не сложно его написать?


#1115

Во-первых, можно вот отсюда взять перевод отличной книги Р. Седжвика “Фундаментальные алгоритмы на С++. Алгоритмы на графах”. Да, тексты программ там на С++, но если студент дошел до изучения данного курса, у него должно хватить знаний, чтобы там разобраться. Сами же тексты программ выложены на GitHub.

Во-вторых, можно скачать книгу С. Окулов. Программирование в алгоритмах. 2007 год. 341 стр. PDF. 3.3 Мб., в которой алгоритмы даются на Паскале.

Это Ваше “хорошо бы” умиляет, конечно, но ничего на свете не бывает просто так. Вы можете внести свою лепту в проект, переписав хотя бы часть алгоритмов на PascalABC.NЕТ. А иначе получаются предложения из разряда “я хочу, а вы мне сделайте”.


#1116

Здравствуйте. Хотелось бы сворачивания не только регионов, но и типов с методами (процедур/функций). Было бы очень полезным. А то постоянно вручную сворачивать всё это занимает по минуте (а то и больше) каждую загрузку / перезагрузку Intellisense.


#1117

Что-то пришла в голову, возможно, глупая, идея:

А что, за годы существования различных редакторов, IDE, и прочих Intellisens’ов никто не догадался эти регионы оформлять не просто названием, но и чем-то вроде такого (псевдокод, не в курсе, как это делать в Паскале, оформляется директивой компилятора, им игнорируется)?

#region REGION_NAME (default: [hide|show])

Суть концепта - при открытии исходника в IDE те регионы, что hide, автоматически сворачиваются. Вроде просто и сердито. Скобку с содержимым разрешить не писать, по умолчанию предполагая (default: show).

Можно еще для недавно открытых файлов держать у себя метаинформацию о том, какие регионы были открыты, а какие закрыты на момент закрытия файла. В общем-то, оба варианта имеют право на жизнь.


#1118

Лучше уж скрытым символом, чтоб его оставляло если регион закрыт и при открытии IDE автоматически сворачивало. Хотя обычно, если IDE запоминает свёрнутость какого то код - это вроде делается через дополнительные файлы где то типа ProgramFiles.


#1119

@Admin я просил ранее, но вы проигнорили… Разберитесь, пожалуйста, с закреплёнными темами.

Надо открепить Закрытую старую тему ошибок, в неё всё равно писать уже никто не может.

А так же закрепить новые темы, на которые заменили старую:

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


#1120

Не надо плодить много тем. Достаточно оставить две темы: ошибки компилятора и ошибки IDE. интеллисенс, отладчик это IDE. Ошибки в справке это недочеты, их надо в замечания и предложения.


Ошибки в папке Samples и Справке
#1121

Ну, хорошо, давайте так.


#1122

Ну и? Сделайте уже хоть что то…


#1123

А что сделать-то? Можете сформулировать еще раз. Только без вариантов и обсуждения.


#1124

Надо открепить Закрытую старую тему ошибок.

А так же закрепить новые темы, на которые заменили её:


#1125

Сделал


#1126
type
  TFirst = class 
  end;
  
  TSecond = class(TFirst)
  public 
    static function operator explicit(x: TSecond) := new TFirst(); 
  end;

begin
end.

Это правильно, что данная программа компилируется? Ведь, в ней есть оператор преобразования объекта класса потомка к базовому классу. В C# такие пользовательские операторы преобразования запрещены. Я не знаю других Паскалей, поэтому, если кто знает - хотелось бы увидеть сравнение поведения при компиляции с ними.