digitalmars.D - Delegate
- =?ISO-8859-15?Q?Fabian_Cla=DFen?= (19/19) Dec 02 2008 Hi
- Jarrett Billingsley (4/5) Dec 02 2008 Just change that line to "result +=3D dg();". A delegate is like a
- =?ISO-8859-1?Q?Fabian_Cla=DFen?= (4/9) Dec 02 2008 Oh thank you.
- Janderson (7/18) Dec 02 2008 Great Stuff. We where all at this point at some time. Its fine that
- Derek Parnell (7/29) Dec 02 2008 I don't understand your code, sorry. It seems to me that the argument yo...
- Denis Koroskin (3/28) Dec 02 2008 I was a bit surprized at first, too, but any value is indeed a lazy
- Derek Parnell (6/40) Dec 02 2008 And they C++ has some arcane rules :-)!!!
- Jarrett Billingsley (3/28) Dec 02 2008 It's legal. If you have a typesafe variadic array of delegates, you
- =?ISO-8859-1?Q?Fabian_Cla=DFen?= (11/41) Dec 02 2008 I am learning D. But ...
Hi I have a problem: What's wrong about this code? Code: import std.stdio; int main() { writefln("%f", add(100, 786, 56.0)); return 0; } double add(double delegate()[] dgs...) { double result = 0; foreach(double delegate() dg; dgs) { result += dg; } return result; } Or a better question is: How can I get the value out of the delegate? Greetings Fabian Claßen PS: I am a beginner :P
Dec 02 2008
On Tue, Dec 2, 2008 at 1:30 PM, Fabian Cla=DFen <admin fabs-world.de> wrote= :result +=3D dg;Just change that line to "result +=3D dg();". A delegate is like a function; you call it to get the value.
Dec 02 2008
Jarrett Billingsley schrieb:On Tue, Dec 2, 2008 at 1:30 PM, Fabian Claßen <admin fabs-world.de> wrote:Oh thank you. I see. That's a stupid mistake of mine :D But I love D.result += dg;Just change that line to "result += dg();". A delegate is like a function; you call it to get the value.
Dec 02 2008
Fabian Claßen wrote:Jarrett Billingsley schrieb:Great Stuff. We where all at this point at some time. Its fine that you posted to this group. However you might try posting your questions to D.learn next time, simply so other people who have the same problem can easily find the solution. ;) -JoelOn Tue, Dec 2, 2008 at 1:30 PM, Fabian Claßen <admin fabs-world.de> wrote:Oh thank you. I see. That's a stupid mistake of mine :D But I love D.result += dg;Just change that line to "result += dg();". A delegate is like a function; you call it to get the value.
Dec 02 2008
On Tue, 02 Dec 2008 19:30:47 +0100, Fabian Claßen wrote:Hi I have a problem: What's wrong about this code? Code: import std.stdio; int main() { writefln("%f", add(100, 786, 56.0)); return 0; } double add(double delegate()[] dgs...) { double result = 0; foreach(double delegate() dg; dgs) { result += dg; } return result; } Or a better question is: How can I get the value out of the delegate?I don't understand your code, sorry. It seems to me that the argument you supplied to add() is a list of doubles and not a list of delegates. -- Derek Parnell Melbourne, Australia skype: derek.j.parnell
Dec 02 2008
On Tue, 02 Dec 2008 22:45:03 +0300, Derek Parnell <derek psych.ward> wrote:On Tue, 02 Dec 2008 19:30:47 +0100, Fabian Claßen wrote:I was a bit surprized at first, too, but any value is indeed a lazy delegate that returns itself.Hi I have a problem: What's wrong about this code? Code: import std.stdio; int main() { writefln("%f", add(100, 786, 56.0)); return 0; } double add(double delegate()[] dgs...) { double result = 0; foreach(double delegate() dg; dgs) { result += dg; } return result; } Or a better question is: How can I get the value out of the delegate?I don't understand your code, sorry. It seems to me that the argument you supplied to add() is a list of doubles and not a list of delegates.
Dec 02 2008
On Tue, 02 Dec 2008 22:53:25 +0300, Denis Koroskin wrote:On Tue, 02 Dec 2008 22:45:03 +0300, Derek Parnell <derek psych.ward> wrote:And they C++ has some arcane rules :-)!!! -- Derek Parnell Melbourne, Australia skype: derek.j.parnellOn Tue, 02 Dec 2008 19:30:47 +0100, Fabian Claßen wrote:I was a bit surprized at first, too, but any value is indeed a lazy delegate that returns itself.Hi I have a problem: What's wrong about this code? Code: import std.stdio; int main() { writefln("%f", add(100, 786, 56.0)); return 0; } double add(double delegate()[] dgs...) { double result = 0; foreach(double delegate() dg; dgs) { result += dg; } return result; } Or a better question is: How can I get the value out of the delegate?I don't understand your code, sorry. It seems to me that the argument you supplied to add() is a list of doubles and not a list of delegates.
Dec 02 2008
On Tue, Dec 2, 2008 at 2:45 PM, Derek Parnell <derek psych.ward> wrote:On Tue, 02 Dec 2008 19:30:47 +0100, Fabian Cla=DFen wrote:It's legal. If you have a typesafe variadic array of delegates, you can call the function as if it took a bunch of lazy parameters.Hi I have a problem: What's wrong about this code? Code: import std.stdio; int main() { writefln("%f", add(100, 786, 56.0)); return 0; } double add(double delegate()[] dgs...) { double result =3D 0; foreach(double delegate() dg; dgs) { result +=3D dg; } return result; } Or a better question is: How can I get the value out of the delegate?I don't understand your code, sorry. It seems to me that the argument you supplied to add() is a list of doubles and not a list of delegates.
Dec 02 2008
Jarrett Billingsley schrieb:On Tue, Dec 2, 2008 at 2:45 PM, Derek Parnell <derek psych.ward> wrote:I am learning D. But ... I worked with other programming languages before and so I learn D with a book for experienced programmers. My learning concept is like: reading ... memorizing ... coding So there was a very similar code in the book and I tried to write this code by heart. That's only for your information why I've writen the code like this. The function gets a list of lazy arguments and summarizes the arguments. Greetings Fabian Claßen PS: Sorry I believe my english is bad - I am German :D lolOn Tue, 02 Dec 2008 19:30:47 +0100, Fabian Claßen wrote:It's legal. If you have a typesafe variadic array of delegates, you can call the function as if it took a bunch of lazy parameters.Hi I have a problem: What's wrong about this code? Code: import std.stdio; int main() { writefln("%f", add(100, 786, 56.0)); return 0; } double add(double delegate()[] dgs...) { double result = 0; foreach(double delegate() dg; dgs) { result += dg; } return result; } Or a better question is: How can I get the value out of the delegate?I don't understand your code, sorry. It seems to me that the argument you supplied to add() is a list of doubles and not a list of delegates.
Dec 02 2008