Раскрутил насколько мог старую Issue.
var a := Arr(1, 2, 3);
var g: Func<integer, boolean> := x -> x > 2;
a.Find(g).Println;//тут все хорошо
var g2: Predicate<integer> := x -> x > 2;
g2(456).Println;//тут тоже
a.Find(g2).Println;//а тут ошибка: Generic-функция Find не может быть вызвана
//с данным набором фактических параметров
end.
Я сейчас в Issue опубликую. Да, странная ошибка
Не воспроизводится. У вас последняя версия?
U1.pas:
unit U1;
function object.operator+(a,b:object): byte := 0;
//function operator+(a,b:object): byte; extensionmethod := 0;// так же
function f1 := 0;
end.
0.pas:
uses U1;
function object.operator+(a,b:object): byte := 0;// Ошибка: Повторное объявление
//function operator+(a,b:object): byte; extensionmethod := 0;// так же
function f1 := 0;//а тут ошибки нет
begin end.
То есть операторы нельзя так перекрывать, а обычные подпрограммы можно? Почему?
Подпрограммы всегда можно было перекрывать в Паскале, только в PascalABC разрешили при этом не писать override.
И ещё:
type
t1=class
class function GetP1:byte := 0;
property P1: byte read GetP1;
end;
begin end.
@RAlex в других паскалях это компилируется?
Я не работал с классами в FPC и Delphi, но думаю, что в таком именно виде - вряд ли )))
Я про то что статичный ацессор у не_статичного поля.
Это лучше к @Admin. Я экзотику предпочитаю стороной обходить. Или, иначе, просто не пишу подобные вещи, поэтому и не могу тут что-то сказать определенное. Ну вот такая у меня позиция: непонятно - не используй, тем более, что большого выигрыша от именно такой конструкции я не вижу. Должна работать - пусть работает, не должна - ну и бог с ней… )))
Ну, у вас же установлены старые паскали, разве нет?
Нет, конечно, зачем мне хлам?))) FPC можете попробовать сами: выберите Pascal FPC (3.0.0)
Но по-моему там все же иной синтаксис.
Добрый день. Наткнулся под ALT Linux на ошибку, идентичную описанной в исходной ветке обсуждения. Что до mono-full vs mono-complete: в Альте последнего нет, как нет и libmono-system-numerics. Кто-нибудь побеждал подобное? Поделитесь, пожалуйста, рецептом.
begin
var s: Set of Integer;
Include(s, ReadInteger);
end.
Ошибка времени выполнения: System.InvalidProgramException: Среда выполнения Common Language Runtime обнаружила недопустимую программу.
Стек:
в Program4.Program.$Main()
в Program4.Program.Main()
Да, исправим.
Пока пишите
begin
var s: Set of Integer;
Include(s, ReadInteger());
end.
Спасибо
begin
var s := 1.2-[2,3];//Ошибка: Операция 'dunmin' не применима к типам real и set of integer
end.
Что за dunmin
? Так и должно писать?
Напишите в Issue