is there a common type?

Christian Köstlin christian.koestlin at gmail.com
Thu May 17 07:29:44 PDT 2012


On 5/15/12 20:14 , Ali Çehreli wrote:
> On 05/15/2012 10:29 AM, Christian Köstlin wrote:
>> for [1, 2, 3] and iota(2, 10)?
>>
>> thanks in advance
>>
>> christian
>
> When it comes to compile-time polymorphism or duck typing, they are both
> RandomAccessRanges. (Pedantically, [1, 2, 3] is not a range (I think
> :P), but a container. Although, any slice of it is a RandomAccessRange.)
>
> import std.range;
> import std.stdio;
>
> void foo(R)(R r)
> if (isRandomAccessRange!R)
> {
> if (!r.empty) {
> writeln(r[0]);
> }
> }
>
> void main()
> {
> foo([1, 2, 3]);
> foo(iota(2, 10));
> }
>
> When it comes to runtime polymorphism, they can be both
> RandomAccessFinite!int:
>
> import std.range;
> import std.stdio;
>
> void foo(RandomAccessFinite!int r)
> {
> if (!r.empty) {
> writeln(r[0]);
> }
> }
>
> void main()
> {
> RandomAccessFinite!int r;
>
> r = inputRangeObject([1, 2, 3]);
> foo(r);
>
> r = inputRangeObject(iota(2, 10));
> foo(r);
> }
>
> Ali
>
thanks a lot .. will try this.

regards

christian



More information about the Digitalmars-d-learn mailing list