[Question] Could a function return a list of arguments to call another function?

2013-06-28 Thread MattCoder

Hi,

I would like to know if it's possible to pass the return of a 
function as argument to another function as below:


import std.stdio;

auto foo(int x, int y){
writeln(x, y);
return 3, 4;
}

void main(){
foo(foo(1,2));
}

I would like to print:
1 2
3 4

PS: I tried return a tuple but it doesn't works.

Thanks,

Matheus.


Re: [Question] Could a function return a list of arguments to call another function?

2013-06-28 Thread Ellery Newcomer

On 06/28/2013 11:07 AM, MattCoder wrote:

Hi,

I would like to know if it's possible to pass the return of a function
as argument to another function as below:

import std.stdio;

auto foo(int x, int y){
 writeln(x, y);
 return 3, 4;
}

void main(){
 foo(foo(1,2));
}

I would like to print:
1 2
3 4

PS: I tried return a tuple but it doesn't works.

Thanks,

Matheus.


No, functions cannot return tuples.

However, they can return std.typecons.Tuple, so you could do this:

auto foo(int i, int j) {
writeln(i,  , j);
return tuple(3,4);
}
void main() {
foo(foo(1,2).field);
}



Re: [Question] Could a function return a list of arguments to call another function?

2013-06-28 Thread Simen Kjaeraas
On Fri, 28 Jun 2013 20:07:23 +0200, MattCoder mattco...@hotmail.com  
wrote:



Hi,

I would like to know if it's possible to pass the return of a function  
as argument to another function as below:


import std.stdio;

auto foo(int x, int y){
writeln(x, y);
return 3, 4;
}

void main(){
foo(foo(1,2));
}

I would like to print:
1 2
3 4

PS: I tried return a tuple but it doesn't works.

Thanks,

Matheus.


Not directly,  no. But this should work:


import std.stdio;
import std.typecons : tuple;

auto foo(int x, int y){
writeln(x, y);
return tuple(3, 4);
}

void main(){
foo(foo(1,2).tupleof);
}
--
Simen


Re: [Question] Could a function return a list of arguments to call another function?

2013-06-28 Thread MattCoder

On Friday, 28 June 2013 at 19:39:41 UTC, Ellery Newcomer wrote:
However, they can return std.typecons.Tuple, so you could do 
this:


auto foo(int i, int j) {
writeln(i,  , j);
return tuple(3,4);
}
void main() {
foo(foo(1,2).field);
}



Hi Ellery,

Thanks for your help, it works nicely.


Re: [Question] Could a function return a list of arguments to call another function?

2013-06-28 Thread MattCoder

On Friday, 28 June 2013 at 19:43:37 UTC, Simen Kjaeraas wrote:

import std.stdio;
import std.typecons : tuple;

auto foo(int x, int y){
writeln(x, y);
return tuple(3, 4);
}

void main(){
foo(foo(1,2).tupleof);
}


Hi Simen,

Thanks for your help too, it worked!


Re: [Question] Could a function return a list of arguments to call another function?

2013-06-28 Thread David
 However, they can return std.typecons.Tuple, so you could do this:
 
 auto foo(int i, int j) {
 writeln(i,  , j);
 return tuple(3,4);
 }
 void main() {
 foo(foo(1,2).field);
 }
 

field is deprecated in favor of expand