Description
The documentation says:
For isbits types, a random/reasonable sentinel will be attempted if none provided.
...
ForInteger
types, all bit patterns are valid, so a random value is chosen;
But the constructor uses a constant default value. For example the default sentinel for Int
is -1, so SentinelArray([-1, -1, -1])
creates an array with three missing values. From the documentation I expected an array of three -1
, and a random sentinel different from -1.
The behavior with undef
is also surprising: The documentation refers to the "standard undef pattern". As I understand, undef
is meant to create uninitialized arrays, for cases where initialization is useless and undesired for performance reasons. But SentinelVector{Int}(undef, 3)
actually initializes the array with 3 missing values. I would suggest removing the undef
argument from the constructors (so a vector full of 3 missing values can be created with SentinelVector{Int}(3)
). A later version could re-introduce the undef pattern with the correct semantics...
Activity