Автоклассы можно наследовать только от интерфейсов
. Интерфейсы не наследуются классами или записями, а реализуются. Термин наследовать можно применять в отношениях таких как класс - класс, интерфейс - интерфейс. В C# 8.0, насколько знаю, планируется реализация методов в интерфейсах по умолчанию. В этом случае, думаю, можно говорить о наследовании реализаций методов. (Возможно, есть еще примеры подобного в других языках, но я иных таких примеров не знаю.) Но PascalABC.Net это не поддерживает и не собирается, по видимому. Поэтому в контексте данного компилятора это является ошибкой.
В теории ООП есть понятия “наследование интерфейса” и “наследование реализации”. Интерфейсы в узком смысле созданы как легковесные классы, они как раз и предназначены для наследования интерфейса в чистом виде. В ряде описаний языков программирования для интерфейсов сознательно заужается терминология.
В описании языка такое писать нельзя. В Что нового - вполне.
@Admin, у Вас в справке где-нибудь сказано про & для экранирования ключевых слов?
В разделе про комментарии я не нашёл, что где-нибудь бы было сказано о том, что вложенные комментарии одного вида запрещены:
begin
{ {} }
end.
. Во всяком случае в глазах начинающих это выглядело бы как недоработка, нежели как ограничение, так как об этом не сказано в справке. Единственное по этой теме:
Комментарии разных типов могут быть вложенными:
, но про вложенность комментариев одного вида ничего не сказано.
Вы неправы в том, что концентрируетесь на внутреннем представлении кортежей. И Вас это занимает более чем то, для чего кортежи предназначены. А предназначены они для того чтобы быть контейнером для полей разных типов. Как записи или классы. Независимо от внутреннего представления.
Кроме того, я уже говорил, что прошу не замусоривать issue вопросами о справке по языку.
Моё личное дело на чем концентрироваться. Если Вам это не нравиться - Ваше дело. Я Вас за это не осуждаю.
Предназначение, конечно, неизменно от того класс это или запись, но упоминать что они из себя представляют в плане реализации важно, хотя бы потому, что из этого можно сделать вывод как их стоит использовать. Большое количество объектов ссылочных типов замедлят работу приложения, нежели записей. В контексте оптимизации это полезно знать.
Акцентирование на технической части реализации не менее важно, чем общее описание структур данных.
Нет, тут подсказка для MatrGen не правильная. Вот что тут такое … “заполненный элементами x”? Это элементы, которые получаются на выходе функции gen(i, j) И в справке то же самое.
function Pos(subs, s: string; from: integer): integer;
begin
if (subs = nil) or (subs.Length = 0) or (from > s.Length) then
Result := 0
else Result := s.IndexOf(subs, from - 1, System.StringComparison.Ordinal) + 1;
end;
function PosEx(subs, s: string; from: integer) := Pos(subs,s,from);
И, кстати, почему нет встроенного одноименного метода расширения, такого:
WriteElements<T>(self: file of T; ss: sequence of T); extensionmethod;,
чтобы работал с уже открытым файлом и не перезаписывал все, а вставлял последовательность, начиная с позиции файлового указателя? Это с чем-то связано или просто забыли выписать?