Parameter is null by default. No value is given. Code says it is not null.

tcak via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Thu Apr 9 05:01:56 PDT 2015


On Thursday, 9 April 2015 at 11:45:31 UTC, tcak wrote:
> I have written a function as follows:
>
> public bool setCookie(
> 	string name,
> 	string value,
> 	long maxAgeInSeconds = long.min,
> 	string expiresOnGMTDate=null,
> 	string path=null,
> 	string domain=null,
> 	bool secure=false
> ) shared{
>
> 	// if headers are sent already, leave
> 	if( headersSent ) return false;
>
> 	// name cannot be empty
> 	if( (name is null) || (name.length <= 0) ) return false;
>
> 	writeln(
> 		"Name: ", name,
> 		"  Max Age: ", maxAgeInSeconds,
> 		"  Expires null: ", (expiresOnGMTDate == null),
> 		"  Path equals null: ", (path == null),
> 		"  Domain null: ", (domain is null)
> 	);
>
> 	return true;
> }
>
>
>
> Here is the testing code:
>
> responseObject.setCookie( "A", "B" );
> auto now = std.datetime.Clock.currTime().toSimpleString();
> //writeln("Now |", now, "|");
> responseObject.setCookie( "Response Time", now );
>
>
> Here is the results:
>
> Name: A  Max Age: -9223372036854775808  Expires null: true  
> Path equals null: true  Domain null: true
>
> Name: Response Time  Max Age: -9223372036854775808  Expires 
> null: true  Path equals null: false  Domain null: false
>
>
> I don't know what is happening though, somehow path and domain 
> parameters in second use of function are not null even I 
> haven't given any value to them.
>
> If I uncomment the "writeln" line in test code, it turns 
> normal. I am so much confused right now. What is happening here?

Well, I have tried same code without objects in a test code, and 
it is null now as expected. Completely same code though.


More information about the Digitalmars-d-learn mailing list