Re: Initialize to None

2020-09-05 Thread N.S. via Digitalmars-d-learn

On Sunday, 6 September 2020 at 05:06:26 UTC, starcanopy wrote:

On Sunday, 6 September 2020 at 03:42:36 UTC, N.S. wrote:
I'd like to check whether a variable is initialized or not. 
And I'd also like to uninitialize a variable that is already 
initialized. Thanks!


int x = void;

if (x == void)
{
writeln("x not initialized");
}
else
{
// OK, use x
}

// Uninitialize x
x = void;


You might consider Nullable from std.typecons; however, if 
you're avoiding implicit initialization for performance 
reasons, then this solution might not be applicable.


import std.stdio: writeln;
import std.typecons: Nullable;

Nullable!int x;

if (x.isNull)
{
writeln("x not 'initialized'");
}
else
{
// OK, use x
}

// 'Uninitialize' x
x.nullify();


Perfect, thanks!



Re: Initialize to None

2020-09-05 Thread starcanopy via Digitalmars-d-learn

On Sunday, 6 September 2020 at 03:42:36 UTC, N.S. wrote:
I'd like to check whether a variable is initialized or not. And 
I'd also like to uninitialize a variable that is already 
initialized. Thanks!


int x = void;

if (x == void)
{
writeln("x not initialized");
}
else
{
// OK, use x
}

// Uninitialize x
x = void;


You might consider Nullable from std.typecons; however, if you're 
avoiding implicit initialization for performance reasons, then 
this solution might not be applicable.


import std.stdio: writeln;
import std.typecons: Nullable;

Nullable!int x;

if (x.isNull)
{
writeln("x not 'initialized'");
}
else
{
// OK, use x
}

// 'Uninitialize' x
x.nullify();


Re: Initialize to None

2020-09-05 Thread N.S. via Digitalmars-d-learn
On Sunday, 6 September 2020 at 03:56:51 UTC, Steven Schveighoffer 
wrote:

On 9/5/20 11:42 PM, N.S. wrote:
I'd like to check whether a variable is initialized or not. 
And I'd also like to uninitialize a variable that is already 
initialized. Thanks!


int x = void;

if (x == void)


There isn't a way to check this.


{
     writeln("x not initialized");
}
else
{
     // OK, use x
}

// Uninitialize x
x = void;



When you set the initial value of x to void, it means "don't do 
anything, let whatever data is already on the stack be the 
value of x".


So "uninitialize" doesn't really mean anything. It would 
technically mean "do nothing".


-Steve


Do I have to create additional variable bool x_is_valid? Problem 
is I got many variables. Thanks.




Re: Initialize to None

2020-09-05 Thread Steven Schveighoffer via Digitalmars-d-learn

On 9/5/20 11:42 PM, N.S. wrote:
I'd like to check whether a variable is initialized or not. And I'd also 
like to uninitialize a variable that is already initialized. Thanks!


int x = void;

if (x == void)


There isn't a way to check this.


{
     writeln("x not initialized");
}
else
{
     // OK, use x
}

// Uninitialize x
x = void;



When you set the initial value of x to void, it means "don't do 
anything, let whatever data is already on the stack be the value of x".


So "uninitialize" doesn't really mean anything. It would technically 
mean "do nothing".


-Steve