Thread overview | |||||||
---|---|---|---|---|---|---|---|
|
September 06, 2020 Initialize to None | ||||
---|---|---|---|---|
| ||||
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; |
September 05, 2020 Re: Initialize to None | ||||
---|---|---|---|---|
| ||||
Posted in reply to N.S. | 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 |
September 06, 2020 Re: Initialize to None | ||||
---|---|---|---|---|
| ||||
Posted in reply to Steven Schveighoffer | 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.
|
September 06, 2020 Re: Initialize to None | ||||
---|---|---|---|---|
| ||||
Posted in reply to N.S. | 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();
|
September 06, 2020 Re: Initialize to None | ||||
---|---|---|---|---|
| ||||
Posted in reply to starcanopy | 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!
|
Copyright © 1999-2021 by the D Language Foundation