Thread overview
How to gets multi results using tuple in D?
Dec 23, 2021
zoujiaqing
Dec 23, 2021
WebFreak001
Dec 23, 2021
russhy
Dec 26, 2021
zoujiaqing
Dec 24, 2021
zjh
December 23, 2021

C++ Code:

std::tuple<bool, int, int, std::string_view> DoIt()
{
    return {false, 0, 0, "Hello"};
}

auto [r1, r2, r3, r4] = DoIt();

if (r1 == false)

D Code:

Tuple!(bool, int, int, string) DoIt()
{
    return [false, 1, 1, "Hello"];
}

auto result = DoIt();

auto r1= result[0];
auto r2= result[1];
auto r3= result[2];
auto r3= result[3];

if (r1 == false)

D requires more lines of code.

December 23, 2021

On Thursday, 23 December 2021 at 08:33:17 UTC, zoujiaqing wrote:

>

C++ Code:

std::tuple<bool, int, int, std::string_view> DoIt()
{
    return {false, 0, 0, "Hello"};
}

auto [r1, r2, r3, r4] = DoIt();

if (r1 == false)

D Code:

Tuple!(bool, int, int, string) DoIt()
{
    return [false, 1, 1, "Hello"];
}

auto result = DoIt();

auto r1= result[0];
auto r2= result[1];
auto r3= result[2];
auto r3= result[3];

if (r1 == false)

D requires more lines of code.

I think this is the best thing you can do:

bool r1;
int r2, r3;
string r4;
AliasSeq!(r1, r2, r3, r4) = DoIt();

https://forum.dlang.org/thread/kmugmwmduxeoyfffoiif@forum.dlang.org

December 23, 2021

it's one of those things where D is starting to fall behind competition when it comes to quality of life features

while OP's example is not that bad, the AliasSeq is plain and simple just confusing.. it's a NO

also removing the need of import for tuple is needed!!

it's the same with sumtype/tagged unions and enums literals

we need a workgroup to tackle these issues quick

some new languages are building momentum, it'll be hard to compete when they get released...

we better get ready now and maintain a good balance of new features without forgetting about quality of life

and deprecating/removing old features that holds us back

December 24, 2021

On Thursday, 23 December 2021 at 08:33:17 UTC, zoujiaqing wrote:

>

C++ Code:

also ...,it's very useful.

December 26, 2021

On Thursday, 23 December 2021 at 08:56:36 UTC, WebFreak001 wrote:

>

On Thursday, 23 December 2021 at 08:33:17 UTC, zoujiaqing wrote:

>

C++ Code:

std::tuple<bool, int, int, std::string_view> DoIt()
{
    return {false, 0, 0, "Hello"};
}

auto [r1, r2, r3, r4] = DoIt();

if (r1 == false)

D Code:

Tuple!(bool, int, int, string) DoIt()
{
    return [false, 1, 1, "Hello"];
}

auto result = DoIt();

auto r1= result[0];
auto r2= result[1];
auto r3= result[2];
auto r3= result[3];

if (r1 == false)

D requires more lines of code.

I think this is the best thing you can do:

bool r1;
int r2, r3;
string r4;
AliasSeq!(r1, r2, r3, r4) = DoIt();

https://forum.dlang.org/thread/kmugmwmduxeoyfffoiif@forum.dlang.org

Thanks! It's not concise!