On Wed, 2009-10-28 at 10:39 +0000, Patrick Castle wrote:
> Just stuffing about at the moment getting my head about creating classes in
> Genie. From what I gather, every variable you declare outside of a method is a
> member/property of that class.
> 
> What I'm finding a bit confusing is there isn't just one way to declare a
> property it seems - but both ways don't work consistently.
> 
> For example, I have class "Test" and I want it to have a private property "a"
> not accessible to external callers. It seems like these are the options:
> 
> class Test : Object
>     _a : int
> 
> or
> 
> class Test : Object
>     prop private a : int
> 
> or
> 
> class Test : Object
>     prop _a : int
> 
> but not
> 
> class Test : Object
>     private a : int
> 


a : private int


> My first question - is there any reason why that last one shouldn't compile?
> Also - why actually have so many ways to declare the same thing? Is it
> deliberate or just an accident of the syntax checking? 

they are not all the same



> 
> Also - does Genie have the concept of a class variable, or are they all just
> instance variables? My initial temptation was to use static in the declaration
> 
> class Test : Object
>     prop static a : int
> 
> This actually starts spitting out all sorts of errors when compiling the C
> source, so perhaps it gets further than it should. Is it an illegal 
> declaration?
> And if so, should it be caught before it gets as far as the C source being
> created and compiled?
> 
> On the Genie homepage it says:
> All methods, properties and events can also take modifiers to define further
> options.
> 
> I assumed that would mean that all modifiers were legal. So I thought I should
> try the other modifiers.
> 
> abstract:
> 
> class Test : Object
>     prop abstract a : int
> 
> This one compiles OK, but if you create an instance of the class and assign a
> value to the property you get a Segmentation Fault when you run it. 

possibly a bug - im not sure if abstract properties are supported

> 
> I looked at the definition of abstract and it seems to say that it should not 
> be
> defined in the class in which it's declared but only in the subclass. So I
> created a subclass and defined it there instead and I still get a clean 
> compile
> but a Segmentation Fault when running.
> 
> I'm guessing that this is only meant for methods rather than properties - but 
> if
> so, it would probably be a good idea to make a distinction on the web page
> between method modifiers and property modifiers. Seems like the remaining
> modifiers look relevant only to methods as well.
> 
> Also - I think rather than getting a Segmentation Fault, improper use of these
> modifiers should probably throw exceptions during the compile.
>  
> So to summarise, declaration of properties implies public access unless 
> keyword
> private is used (or underscore). Your options are: _var, prop private var, 
> prop
> _var.

if you dont use prop then its a field 

> 
> There is no such thing as a class variable in Genie.

not sure what you mean here?

> 
> Would that be an accurate summary?

no

> 
> Regards
> Patrick
> 
> _______________________________________________
> Vala-list mailing list
> [email protected]
> http://mail.gnome.org/mailman/listinfo/vala-list

_______________________________________________
Vala-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/vala-list

Reply via email to