Java collections in D
BLS
nanali at wanadoo.fr
Wed Oct 11 14:30:36 PDT 2006
Thanks Jarret,
regarding Serializeable, i guess I have seen something in the Mango Tree
(IO)
Another thread on D language :
Walter: any plan to add support for yield/return Iterators/generators?
(like C# allready has) Walter's Answere: In D 2.0
I' ll try your code but I am afraid there are some drawbacks. found
something in the *lazy evaluation /iterator* thread again on D language.
Somebody tries something similar to your implementation. as mixin
Have to investigate. again, thanks
björn
Jarrett Billingsley schrieb:
> "BLS" <nanali at wanadoo.fr> wrote in message
> news:egj4g4$1gpa$1 at digitaldaemon.com...
>
>>Hi,
>>I like to translate the following Java code into D. (reason follows)
>>
>>**
>> * Collection interface; the root of all Java 1.5 collections.
>> */
>>public interface Collection<AnyType> extends Iterable<AnyType>,
>>java.io.Serializable
>>{
>> int size( );
>>
>> boolean isEmpty( );
>>
>> // and so on ..............
>> /**
>> * Obtains an Iterator object used to traverse the collection.
>> * @return an iterator positioned prior to the first element.
>> */
>> Iterator<AnyType> iterator( );
>>
>> /**
>> * Obtains a primitive array view of the collection.
>> * @return the primitive array view.
>> */
>> Object [ ] toArray( );
>>
>> /**
>> * Obtains a primitive array view of the collection.
>> * @return the primitive array view.
>> */
>> <OtherType> OtherType [ ] toArray( OtherType [ ] arr );
>>}
>>
>>Reason :
>>Converting (a lot of ) Java code into D requires java collections in D.
>>(also automatic Java2D translation will benefit)
>>
>>Questions :
>>1) exists allready something simular to ITERABLE, SERIALIZABLE (have not
>>seen the interf. yet)
>
>
> Serializable doesn't really have much of an analogue in D.. Java seems to
> treat it as special (even going so far as to have a keyword to prevent
> serialization of a member variable, "transient"), but there is no standard
> serializing mechanism in D. It's useful if you want to have all your
> collection types able to be serialized to some kind of file (disk, over
> network etc.), but if you don't need that kind of ability..
>
> As for Iterable? The way Java does "foreach" (for(member : collection)) is
> also different than how D does it. D accomplishes foreach iteration through
> an opApply method. I suppose it would be possible to make an Iterable
> templated interface which means that the derived class must implement
> opApply, like:
>
> interface Iterable(Type)
> {
> int opApply(int delegate(inout Type index) dg);
> }
>
> class Foo(T) : Iterable!(T)
> {
> int opApply(int delegate(inout T index) dg)
> {
> // whatever
> }
> }
>
>
>>2) <OtherType> OtherType [ ] toArray( OtherType [ ] arr );
>>Simply ??????.
>
>
> In D, this would just be
>
> OtherType[] toArray(OtherType[] arr);
>
> According to the Java specs, it will attempt to put the collection's
> contents into the passed-in array, but if it doesn't fit, it'll make a new
> one and return that instead.
>
>
More information about the Digitalmars-d-learn
mailing list