Re: turn range into tuple ?

2018-06-28 Thread Flaze07 via Digitalmars-d-learn

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


Re: turn range into tuple ?

2018-06-28 Thread Flaze07 via Digitalmars-d-learn

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


Re: turn range into tuple ?

2018-06-28 Thread Jonathan M Davis via Digitalmars-d-learn
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




Re: turn range into tuple ?

2018-06-28 Thread Flaze07 via Digitalmars-d-learn

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


Re: turn range into tuple ?

2018-06-28 Thread Stefan Koch via Digitalmars-d-learn

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.


Re: turn range into tuple ?

2018-06-28 Thread Flaze07 via Digitalmars-d-learn

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 ?


Re: turn range into tuple ?

2018-06-28 Thread Stefan Koch via Digitalmars-d-learn

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


Re: turn range into tuple ?

2018-06-28 Thread Simen Kjærås via Digitalmars-d-learn

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


turn range into tuple ?

2018-06-28 Thread Flaze07 via Digitalmars-d-learn
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 );