On Tue, 7 Feb 2017 12:30:26 +0100
Maciej Izak <hnb.c...@gmail.com> wrote:

> 2017-02-07 12:10 GMT+01:00 Mattias Gaertner <nc-gaert...@netcologne.de>:
>[...]
> Generally "static" means no hidden parameter "self". "static" for methods
> is used for methods designed for callbacks from external API.

That's an advantage of static methods.
But how is that related to class properties?
How can you use class properties with "methods designed for
callbacks from external API"?

 
> We have 3 possibilities:
> 
> ===code begin===
> type
>   TFooClass = class of TFoo;
>   TFoo = class
>     function A: Int32; // self as instance
>     class function B: Int32; // self as meta class of TFoo
>     class function C: Int32; static; // no self
> 
>     property D: Int32 read A;
>     property E: Int32 read B;
>     class property F: Int32 read C;
> ===code end===
> 
> "class property" has two advantages. First: you can use "static" methods
> for properties 

Sorry, I don't get it.
Why is using a static method as accessor an advantage?


> and second: will work for improper implemented code ;)
> (which is maybe disadvantage?):
> 
> TFoo($1).F;
> TFooClass($1).F;

I don't see why these calls require static instead of normal.

Mattias
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to