What does dict == null mean vs dict is null, when dict is a dictionary?
Is this table accurate?
dict == null dict is null # elements memory allocated
true true 0 no
true false 0 yes
false false 1+ yes
false true (Is this a possibility, and if so, how to create it?)
source/app.d
import std.stdio;
void main()
{
// value[key]
int[string] dayNumbers =
// key : value
[
"Monday": 0, "Tuesday": 1, "Wednesday": 2, "Thursday": 3, "Friday": 4,
"Saturday": 5, "Sunday": 6
];
dayNumbers.remove("Tuesday");
// writeln(dayNumbers["Tuesday"]); // ← run-time ERROR
dayNumbers.clear; // Remove all elements
// Best to check length to see if associative array is empty, rather than comparing to null.
// Checking to see if an associative array is null only tells you if it has been allocated memory.
// dayNumbers has no elements
writeln("dayNumbers == null? ", dayNumbers == null); // true
// dayNumbers has allocated memory, although no elements
writeln("dayNumbers is null? ", dayNumbers is null); // false
writeln("dayNumbers.length: ", dayNumbers.length); // 0
writeln;
int[string] aNonInitializedDictionary;
writeln("aNonInitializedDictionary is null? ", aNonInitializedDictionary is null); // true
writeln("aNonInitializedDictionary == null? ", aNonInitializedDictionary == null); // true
writeln("aNonInitializedDictionary.length: ", aNonInitializedDictionary.length); // 0
writeln;
int[string] aPopulatedDictionary;
aPopulatedDictionary["Alpha"] = 1;
writeln("aPopulatedDictionary is null? ", aPopulatedDictionary is null); // false
writeln("aPopulatedDictionary == null? ", aPopulatedDictionary == null); // false
writeln("aPopulatedDictionary.length: ", aPopulatedDictionary.length); // 0
}
Console output
dayNumbers == null? true
dayNumbers is null? false
dayNumbers.length: 0
aNonInitializedDictionary is null? true
aNonInitializedDictionary == null? true
aNonInitializedDictionary.length: 0
aPopulatedDictionary is null? false
aPopulatedDictionary == null? false
aPopulatedDictionary.length: 1
Permalink
Reply