Thread overview
turn range into tuple ?
Jun 28, 2018
Flaze07
Jun 28, 2018
Stefan Koch
Jun 28, 2018
Simen Kjærås
Jun 28, 2018
Flaze07
Jun 28, 2018
Stefan Koch
Jun 28, 2018
Flaze07
Jun 28, 2018
Flaze07
Jun 28, 2018
Jonathan M Davis
Jun 28, 2018
Flaze07
June 28, 2018
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
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
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
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
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
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
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
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
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