View source code
Display the source code in std/typecons.d from which this
page was generated on github.
Report a bug
If you spot a problem with this page, click here to create a
Bugzilla issue.
Improve this page
Quickly fork, edit online, and submit a pull request for this page.
Requires a signed-in GitHub account. This works well for small changes.
If you'd like to make larger changes you may want to consider using
local clone.
std.typecons.NullableRef/nullableRef
- multiple declarations
Function nullableRef
Just like Nullable!T
, except that the object refers to a value
sitting elsewhere in memory. This makes assignments overwrite the
initially assigned value. Internally NullableRef!T
only stores a
pointer to T
(i.e., Nullable!T
).
auto nullableRef(T)
(
T* t
);
Example
import std .exception : assertThrown;
int x = 5, y = 7;
auto a = nullableRef(&x);
assert(!a .isNull);
writeln(a); // 5
writeln(x); // 5
a = 42;
writeln(x); // 42
assert(!a .isNull);
writeln(a); // 42
a .nullify();
writeln(x); // 42
assert(a .isNull);
assertThrown!Throwable(a .get);
assertThrown!Throwable(a = 71);
a .bind(&y);
writeln(a); // 7
y = 135;
writeln(a); // 135
Struct NullableRef
Just like Nullable!T
, except that the object refers to a value
sitting elsewhere in memory. This makes assignments overwrite the
initially assigned value. Internally NullableRef!T
only stores a
pointer to T
(i.e., Nullable!T
).
struct NullableRef(T)
;
Constructors
Name | Description |
---|---|
this
(value)
|
Constructor binding this to value .
|
Properties
Name | Type | Description |
---|---|---|
get [get]
|
inout(T) | Gets the value. this must not be in the null state.
This function is also called for the implicit conversion to T .
|
isNull [get]
|
bool | Returns true if and only if this is in the null state.
|
Methods
Name | Description |
---|---|
bind
(value)
|
Binds the internal state to value .
|
nullify
()
|
Forces this to the null state.
|
opAssign
(value)
|
Assigns value to the internally-held state.
|
Example
import std .exception : assertThrown;
int x = 5, y = 7;
auto a = nullableRef(&x);
assert(!a .isNull);
writeln(a); // 5
writeln(x); // 5
a = 42;
writeln(x); // 42
assert(!a .isNull);
writeln(a); // 42
a .nullify();
writeln(x); // 42
assert(a .isNull);
assertThrown!Throwable(a .get);
assertThrown!Throwable(a = 71);
a .bind(&y);
writeln(a); // 7
y = 135;
writeln(a); // 135
Authors
Andrei Alexandrescu, Bartosz Milewski, Don Clugston, Shin Fujishiro, Kenji Hara
License
Copyright © 1999-2022 by the D Language Foundation | Page generated by ddox.