"tuple unpacking" with zip?
John Colvin via Digitalmars-d
digitalmars-d at puremagic.com
Wed Oct 21 03:12:49 PDT 2015
On Wednesday, 21 October 2015 at 10:08:24 UTC, Shriramana Sharma
wrote:
> In Python I can do:
>
> ints = [1, 2, 3]
> chars = ['a', 'b', 'c']
> for i, c in zip(ints, chars):
> print(i, c)
>
> Output:
>
> 1 a
> 2 b
> 3 c
>
> But in D if I try:
>
> import std.stdio, std.range;
> void main ()
> {
> int [] ints = [1, 2, 3];
> char [] chars = ['a', 'b', 'c'];
> foreach(int i, char c; zip(ints, chars))
> writeln(i, ' ', c);
> }
>
> I get at the foreach line:
>
> Error: cannot infer argument types
>
> But if I read the grammar at
> http://dlang.org/statement.html#ForeachStatement correctly, the
> foreach syntax does permit any number of identifiers, so I'm
> guessing that the limitation is with
> http://dlang.org/phobos/std_range.html#zip which says items can
> only be accessed by indexing.
>
> What would be needed to std.range.Zip to get the expected
> functionality?
static assert(is(ElementType!string == dchar));
foreach(int i, dchar c; zip(ints, chars))
or
foreach(i, c; zip(ints, chars))
will work fine.
More information about the Digitalmars-d
mailing list