PascalABC.Net рдХреЛ рднреВрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХрд╛рд░рдг

рдкрд░рд┐рдЪрдп


рдкреБрд░рд╛рдиреЗ рдФрд░ рдЕрдЪреНрдЫреЗ рдкрд╛рд╕реНрдХрд▓ рдХрд╛ рд╕рдордп рдЦрддреНрдо рд╣реЛ рдЧрдпрд╛ рд╣реИред рдЗрд╕ рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рдирдП рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╡рд╛рддрд╛рд╡рд░рдг рдХрд╛ рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИред рдЗрд╕ рднрд╛рд╖рд╛ рдХреА рдХрдИ рдмреЛрд▓рд┐рдпрд╛рдБ рджрд┐рдЦрд╛рдИ рджреА рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡реЗ рд╕рднреА рдХреБрдЫ рд╕рд╛рдорд╛рдиреНрдп рдореЗрдВ рдереЗред рдЖрдЬ рд╣рдо PascalABC.Net рдмреЛрд▓реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ рдФрд░ рдпрджрд┐ рдЖрдк рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЖрдкрдХрд╛ рднрд╡рд┐рд╖реНрдп рд╣реИ рддреЛ рдЖрдкрдХреЛ рдЗрд╕реЗ рдХреНрдпреЛрдВ рдЫреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдкрд╣рд▓реЗ рджреЗрдЦреЛ


рд╕реЛрдЪрд┐рдП рдЖрдк рдПрдХ рд╢реБрд░реБрдЖрдд рд╣реИрдВред рднрд▓реЗ рд╣реА рд╡рд╣ рди рд╣реЛред рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдЖрдк рдкрд╣рд▓реА рдмрд╛рд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреА рджреБрдирд┐рдпрд╛ рдореЗрдВ рдЖрдП рдереЗ рдФрд░ рдкрд╣рд▓реА рдЪреАрдЬ рдЬреЛ рдЖрдкрдХреЛ рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рджреА рдЧрдИ рд╣реИ рд╡рд╣ рдкрд╛рд╕реНрдХрд▓ рднрд╛рд╖рд╛ рд╣реИред рдФрд░ рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, PascalABC.Net рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдПред рдареАрдХ рд╣реИ, рдЖрдк рдмреИрдарддреЗ рд╣реИрдВ рдФрд░ рдзреАрд░реЗ-рдзреАрд░реЗ рднрд╛рд╖рд╛ рд╕реАрдЦрдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдЖрдкрдХрд╛ рдХреМрд╢рд▓ рдмрдврд╝ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЖрдк рддреЗрдЬреА рд╕реЗ рдХреБрдЫ рдирдпрд╛ рд╕реАрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдФрд░ рдЕрдм рдЖрдк рдЙрддрдиреЗ рд╣реА рд╢реБрд░реБрдЖрддреА рдирд╣реАрдВ рд╣реИрдВ рдЬрд┐рддрдирд╛ рдЖрдк рд╢реБрд░реБрдЖрдд рдореЗрдВ рдереЗ, рд▓реЗрдХрд┐рди рдПрдХ рдФрд╕рдд рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдЬреНрдЮрд╛рди рд╡рд╛рд▓рд╛ рд╡реНрдпрдХреНрддрд┐ред рдФрд░ рдЗрд╕ рдХреНрд╖рдг рд╕реЗ рд╢реБрд░реВ - рдЖрдк рдкрд╛рд╕реНрдХрд▓реИрдм.рдиреЗрдЯ рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдХреБрдЫ рдЕрд╕реБрд╡рд┐рдзрд╛ рдорд╣рд╕реВрд╕ рдХрд░рдиреЗ рд▓рдЧрддреЗ рд╣реИрдВред рдФрд░ рдЖрдЧреЗ рднрд╛рд╖рд╛ рдФрд░ .Net рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдПрдбрд╡рд╛рдВрд╕ рдХрд╛ рдЕрдзреНрдпрдпрди, рдЬрд┐рддрдирд╛ рдордЬрдмреВрдд рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд▓реЗрдЦрди рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╣реАрдВ рд╣реИред рдЖрдк рдЦреБрдж IDE рдХреА рдХреБрдЫ рдЕрд╕реНрдерд┐рд░рддрд╛ рдкрд░ рдзреНрдпрд╛рди рджреЗрдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рд╡реИрд╕реЗ, Ctrl + Z рджрдмрд╛рдиреЗ рдкрд░ рдЖрдкрдХреЛ рд╕рдВрднрд╡рддрдГ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рдерд╛ - рдПрдХ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЛ рдкреВрд░реНрд╡рд╡рддреН рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╕рдордп рдЦреБрдж PascalABC.Net рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рдЧрдИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдХреЛрдб рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рд╕рд╡рд╛рд▓ рд╣реА рдирд╣реАрдВ рдерд╛ред рдпрд╣ рдХреЗрд╡рд▓ рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдкрдХреЛ рдкреВрд░рд╛ рдХрд░рдирд╛ рд╣реИред

рдЖрдЧреЗ рдХреНрдпрд╛?


рдФрд░ рдлрд┐рд░ рдордЬрд╛ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдкрдиреЗ рдХрднреА рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рд╕рд╛рдорд╛рдиреНрдпреАрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ? рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдпрд╣ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдпрд╣рд╛рдВ рд╣реИ рдХрд┐ рдЖрдк рдХрдИ рдиреБрдХрд╕рд╛рдиреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░реЗрдВрдЧреЗ, рдФрд░, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдпрд╣ рдкрд╛рд╕реНрдХрд▓рдмреИрдХ.рдиреЗрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдкрдХреА рд╕рдХрд╛рд░рд╛рддреНрдордХ рд░рд╛рдп рдХреЛ рд╡рд┐рдкрд░реАрдд рдХрд░ рджреЗрдЧрд╛ред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

type
  ft = () -> integer;

begin
  var f: ft := () -> 0;
  var a := Arr(0).Select&<integer,  ft>(i -> f);
end.

ft, ( тАФ ). Select . , a , sequence of ft, sequence of integer. Select , ft TResult ( ). IDE. ? .


, . , . . тАФ C#, PascalABC.Net ( ). , () TA, T. тАФ TB, - T2.

type
  TA<T> = auto class
    X: T;
  end;
  
  TB<T, T2> = class(TA<T>)
    Y: T2;
    constructor Create(x: T; y: T2) := (self.X, self.Y) := (x, y);
  end;

begin
end.

. . :
Internal compiler error in module [pabcnetc.exe] :'System.Exception: System.NullReferenceException: .
PascalABCCompiler.NETGenerator.ILConverter.ConvertCommonGenericInstanceTypeMembers(ICommonGenericTypeInstance value)
PascalABCCompiler.NETGenerator.ILConverter.ConvertFromTree(IProgramNode p, String TargetFileName, String SourceFileName, CompilerOptions options, String[] ResourceFiles)
PascalABCCompiler.Compiler.Compile()'
? . Issue. : .


, ? ? , , , PascalABC.Net. :

type
  TA = class
    property Prop1: real read 0 write begin end;
  end;

begin end.

Ctrl+Shift+F ( ) :

type
  TA = class
    property Prop1: real read function#GetGen2(real read 00write 
  
  procedure#SetGen1(valuereal read 0 write begin endbegin endproperty 
  
  Prop1: real read#GetGen2 0 write#SetGen1;
end;
  TA = class
    property Prop1: real read 0 write begin end;
  end;

begin end.

, тАФ . . , Ctrl+Z, , .


-, . ? , , . , Ctrl+Z, тАФ , - :
. .
. , . , ( ), . , .

, ?


тАФ C#, Microsoft , PascalABC.Net .


, , , , PascalABC.Net C# тАФ , ( , , IDE ).

P.S. , . ( ).

Source: https://habr.com/ru/post/hi417229/


All Articles