www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - turn range into tuple ?

reply Flaze07 <christianseiji.cs gmail.com> writes:
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 );
Jun 28 2018
next sibling parent Stefan Koch <uplink.coder googlemail.com> writes:
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
Jun 28 2018
prev sibling parent reply Simen =?UTF-8?B?S2rDpnLDpXM=?= <simen.kjaras gmail.com> writes:
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
Jun 28 2018
parent reply Flaze07 <christianseiji.cs gmail.com> writes:
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 ?
Jun 28 2018
next sibling parent reply Stefan Koch <uplink.coder googlemail.com> writes:
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.
Jun 28 2018
parent reply Flaze07 <christianseiji.cs gmail.com> writes:
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
Jun 28 2018
parent Flaze07 <christianseiji.cs gmail.com> writes:
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
Jun 28 2018
prev sibling parent reply Jonathan M Davis <newsgroup.d jmdavisprog.com> writes:
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 Kjrs 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
Jun 28 2018
parent Flaze07 <christianseiji.cs gmail.com> writes:
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
Jun 28 2018