That was exactly what I didn't want to see. This approach is so dirty that 
I feel like earth worm just by looking at this.
I am pretty sure that julia devs share my disgust :)

Dne čtvrtek 12. května 2016 17:29:01 UTC+2 Sisyphuss napsal(a):
>
> I have tried to use Julia module as static class. According to my 
> experience, it is doable. You cannot have two modules of the same names 
> though. When it comes to your example, it means you can't have two apples 
> (this apple and that apple). 
>
> I am afraid you should use immutable Apple type.
> immutable Apple
>   s::float64
>   t::float64
>   Apple(a,b) = s > 0 ? new(a,b) : error("size should be positive")
> end
>
> Apple()= Apple(rand(),rand())
> size(x::Apple) = x.s
> taste(x::Apple) = x.t
>
> a = Apple()
> size(a)
> taste(a)
>
>
>
> On Thursday, May 12, 2016 at 4:26:50 PM UTC+2, Ford Ox wrote:
>>
>> I have checked julia git, but some questions still remain.
>>
>> Should I use module as class substitution? (Every global variable in 
>> module is encapsulated. Same for function unless one uses export). 
>> In that case where is my constructor?
>>
>> In OO languages you know exactly what methods every object has (in IDE 
>> you can use CTRL+Space). How can I do that, or should I need to do that in 
>> julia?
>>
>> Let's say I create a module called Apple, with methods taste() and 
>> size(), and somebody wants to use that module. Methods taste() and size() 
>> are obviously just getters for variables that are somehow stored in Apple 
>> module. The user should be never able to change size and taste of apple by 
>> himself, those values will be randomly set when constructor is called.
>> How do I encapsulate those two variables? Where do I store those two 
>> variables (If I store them in type, user must be able to pass that type 
>> into Apple methods, thus he can just do AppleType.size  = 6). How do I call 
>> constructor if variables are not stored in type?
>> Note: I don't want to have immutable AppleType!
>>
>

Reply via email to