Re: turn range into tuple ?
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 ?
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 ?
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 ?
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 ?
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 ?
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 ?
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 ?
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 ?
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 );