May 31, 2014
>> What do you mean? Like this?
>>
>> Hidden* foo() { return new Hidden();}
>
> Yes, this way you can control all aspects of the construction and use. You wouldn't need to make it private even, just don't lay out the struct in the normal import:
>
> struct Hidden;
>
> I think you would need to use a .di file to do this.

OK, I'll try that also. Thank you!


> You can make the struct's methods and data all private, which would prevent any useful access to it. But I don't know your use case.

I was trying to imitate some Haskell code in D. The idea was to play
with resources: from a File, create an OpenedFile which cannot be
created except by calling File.open(). And only FileOpened has a
.close() method.
Or something like this, anyway.

But I now realize that I was heading in a wrong direction: private is not the way to do that: I want the user to know OpenedFile exists. I just forbid him to create such a value except through File.open(). So I guess :

struct OpenedFile {
    @disable this...
}

is the way to go.

Now I just have to find an explanation on how to use this. I never touched this part of D.
1 2
Next ›   Last »