Thread overview | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
|
June 28, 2018 turn range into tuple ? | ||||
---|---|---|---|---|
| ||||
is there some sort of ways to turn range into tuple ? ( an array preferably ) e.g uint[] arr = [ 10, 20, 30 ]; auto tup = rangeToTup( arr ); assert( tup[ 0 ] == 10 ); assert( tup[ 1 ] == 20 ); assert( tup[ 2 ] == 30 ); |
June 28, 2018 Re: turn range into tuple ? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Flaze07 | On Thursday, 28 June 2018 at 08:36:54 UTC, Flaze07 wrote:
> is there some sort of ways to turn range into tuple ? ( an array preferably )
> e.g
> uint[] arr = [ 10, 20, 30 ];
> auto tup = rangeToTup( arr );
> assert( tup[ 0 ] == 10 );
> assert( tup[ 1 ] == 20 );
> assert( tup[ 2 ] == 30 );
I think you are looking for `aliasSeqOf` in std.meta
|
June 28, 2018 Re: turn range into tuple ? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Flaze07 | On Thursday, 28 June 2018 at 08:36:54 UTC, Flaze07 wrote: > is there some sort of ways to turn range into tuple ? ( an array preferably ) > e.g > uint[] arr = [ 10, 20, 30 ]; > auto tup = rangeToTup( arr ); > assert( tup[ 0 ] == 10 ); > assert( tup[ 1 ] == 20 ); > assert( tup[ 2 ] == 30 ); https://dlang.org/phobos/std_meta#aliasSeqOf -- Simen |
June 28, 2018 Re: turn range into tuple ? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Simen Kjærås | On Thursday, 28 June 2018 at 08:52:33 UTC, Simen Kjærås wrote:
> On Thursday, 28 June 2018 at 08:36:54 UTC, Flaze07 wrote:
>> is there some sort of ways to turn range into tuple ? ( an array preferably )
>> e.g
>> uint[] arr = [ 10, 20, 30 ];
>> auto tup = rangeToTup( arr );
>> assert( tup[ 0 ] == 10 );
>> assert( tup[ 1 ] == 20 );
>> assert( tup[ 2 ] == 30 );
>
> https://dlang.org/phobos/std_meta#aliasSeqOf
>
> --
> Simen
what about during runtime ?
|
June 28, 2018 Re: turn range into tuple ? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Flaze07 | On Thursday, 28 June 2018 at 09:26:10 UTC, Flaze07 wrote:
> On Thursday, 28 June 2018 at 08:52:33 UTC, Simen Kjærås wrote:
>> On Thursday, 28 June 2018 at 08:36:54 UTC, Flaze07 wrote:
>>> is there some sort of ways to turn range into tuple ? ( an array preferably )
>>> e.g
>>> uint[] arr = [ 10, 20, 30 ];
>>> auto tup = rangeToTup( arr );
>>> assert( tup[ 0 ] == 10 );
>>> assert( tup[ 1 ] == 20 );
>>> assert( tup[ 2 ] == 30 );
>>
>> https://dlang.org/phobos/std_meta#aliasSeqOf
>>
>> --
>> Simen
>
> what about during runtime ?
Tuples are compile-time entities.
However if you just want an array use std.range.array.
|
June 28, 2018 Re: turn range into tuple ? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Stefan Koch | On Thursday, 28 June 2018 at 09:38:36 UTC, Stefan Koch wrote:
> On Thursday, 28 June 2018 at 09:26:10 UTC, Flaze07 wrote:
>> On Thursday, 28 June 2018 at 08:52:33 UTC, Simen Kjærås wrote:
>>> On Thursday, 28 June 2018 at 08:36:54 UTC, Flaze07 wrote:
>>>> is there some sort of ways to turn range into tuple ? ( an array preferably )
>>>> e.g
>>>> uint[] arr = [ 10, 20, 30 ];
>>>> auto tup = rangeToTup( arr );
>>>> assert( tup[ 0 ] == 10 );
>>>> assert( tup[ 1 ] == 20 );
>>>> assert( tup[ 2 ] == 30 );
>>>
>>> https://dlang.org/phobos/std_meta#aliasSeqOf
>>>
>>> --
>>> Simen
>>
>> what about during runtime ?
>
> Tuples are compile-time entities.
> However if you just want an array use std.range.array.
that's interesting, thanks
|
June 28, 2018 Re: turn range into tuple ? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Flaze07 | On Thursday, 28 June 2018 at 09:42:54 UTC, Flaze07 wrote:
> On Thursday, 28 June 2018 at 09:38:36 UTC, Stefan Koch wrote:
>> On Thursday, 28 June 2018 at 09:26:10 UTC, Flaze07 wrote:
>>> On Thursday, 28 June 2018 at 08:52:33 UTC, Simen Kjærås wrote:
>>>> On Thursday, 28 June 2018 at 08:36:54 UTC, Flaze07 wrote:
>>>>> is there some sort of ways to turn range into tuple ? ( an array preferably )
>>>>> e.g
>>>>> uint[] arr = [ 10, 20, 30 ];
>>>>> auto tup = rangeToTup( arr );
>>>>> assert( tup[ 0 ] == 10 );
>>>>> assert( tup[ 1 ] == 20 );
>>>>> assert( tup[ 2 ] == 30 );
>>>>
>>>> https://dlang.org/phobos/std_meta#aliasSeqOf
>>>>
>>>> --
>>>> Simen
>>>
>>> what about during runtime ?
>>
>> Tuples are compile-time entities.
>> However if you just want an array use std.range.array.
>
> that's interesting, thanks
the reason I am asking is that I want to do something similar to this code in python :
a, b, c = input().split(' ')
because I feel like reading with readln is easier than readf
|
June 28, 2018 Re: turn range into tuple ? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Flaze07 | On Thursday, June 28, 2018 09:26:10 Flaze07 via Digitalmars-d-learn wrote:
> On Thursday, 28 June 2018 at 08:52:33 UTC, Simen Kjærås wrote:
> > On Thursday, 28 June 2018 at 08:36:54 UTC, Flaze07 wrote:
> >> is there some sort of ways to turn range into tuple ? ( an
> >> array preferably )
> >> e.g
> >> uint[] arr = [ 10, 20, 30 ];
> >> auto tup = rangeToTup( arr );
> >> assert( tup[ 0 ] == 10 );
> >> assert( tup[ 1 ] == 20 );
> >> assert( tup[ 2 ] == 30 );
> >
> > https://dlang.org/phobos/std_meta#aliasSeqOf
> >
> > --
> >
> > Simen
>
> what about during runtime ?
Ranges in general have an arbitrary length, whereas tuples have a fixed length that is known at compile time. So, it really doesn't make sense to convert a range to a tuple. You can create function that takes the first x number of elements of a range (probably throwing if the range is too short) and create a tuple from those elements, but it would be a bit of a pain to do, and it would generally be a pretty weird thing to do. A dynamic array would make a lot more sense than a tuple.
- Jonathan M Davis
|
June 28, 2018 Re: turn range into tuple ? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Jonathan M Davis | On Thursday, 28 June 2018 at 09:47:07 UTC, Jonathan M Davis wrote:
> On Thursday, June 28, 2018 09:26:10 Flaze07 via Digitalmars-d-learn wrote:
>> On Thursday, 28 June 2018 at 08:52:33 UTC, Simen Kjærås wrote:
>> > [...]
>>
>> what about during runtime ?
>
> Ranges in general have an arbitrary length, whereas tuples have a fixed length that is known at compile time. So, it really doesn't make sense to convert a range to a tuple. You can create function that takes the first x number of elements of a range (probably throwing if the range is too short) and create a tuple from those elements, but it would be a bit of a pain to do, and it would generally be a pretty weird thing to do. A dynamic array would make a lot more sense than a tuple.
>
> - Jonathan M Davis
ok gotcha
|
Copyright © 1999-2021 by the D Language Foundation