www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Function default parameters

reply "Tim M" <a b.com> writes:
I want to use the return value of another member function as the default  
for a parameter. I could just overload it but I would prefer to do it like:

module test;

class Thing
{
	char[] getString(uint len = this.strLen())
	{
		char[] a = new char[len];
		return a;
	}
	uint strLen()
	{
		return 6;
	}
}

int main()
{
	Thing t = new Thing;
	char[] abc = t.getString;
	return 0;
}

test.d(6): Error: 'this' is only defined in non-static member functions,  
not Thing
Nov 13 2008
next sibling parent "Jarrett Billingsley" <jarrett.billingsley gmail.com> writes:
On Thu, Nov 13, 2008 at 8:34 PM, Tim M <a b.com> wrote:
 I want to use the return value of another member function as the default for
 a parameter. I could just overload it but I would prefer to do it like:

You can't, sorry. You'll just have to overload it.
Nov 13 2008
prev sibling parent BCS <ao pathlink.com> writes:
Reply to tim,

 I want to use the return value of another member function as the
 default  for a parameter. I could just overload it but I would prefer
 to do it like:
 
 module test;
 
 class Thing
 {
 char[] getString(uint len = this.strLen())
 {
 char[] a = new char[len];
 return a;
 }
 uint strLen()
 {
 return 6;
 }
 }
 int main()
 {
 Thing t = new Thing;
 char[] abc = t.getString;
 return 0;
 }
 test.d(6): Error: 'this' is only defined in non-static member
 functions,  not Thing
 

Sorry. No sutch luck. The overload is what your stuck with.
Nov 13 2008