[OT] Some neat ideas from the Kotlin language
Kagamin via Digitalmars-d
digitalmars-d at puremagic.com
Wed Feb 24 02:05:43 PST 2016
On Tuesday, 23 February 2016 at 22:03:32 UTC, Xinok wrote:
> On Tuesday, 23 February 2016 at 19:43:43 UTC, rsw0x wrote:
>> ...
>> How does this differ from the example I gave where the branch
>> is only taken if the pointer is non-null?
>
> D doesn't prevent you from dereferencing a null pointer whereas
> these scenarios should be impossible in Kotlin as well as Rust.
> Case and point, this code compiles without issue but crashes at
> runtime:
>
> int* foo()
> {
> return null;
> }
>
> void main()
> {
> if(int* ptr = new int)
> {
> ptr = foo(); // Whoops...
> *ptr = 35; // Crash
> }
> }
>
> In D, pointers and reference types can spontaneously become
> null under almost any context. That's the difference.
The idea is to match non-null pointers, this is how you do it:
int* foo()
{
return null;
}
void main()
{
if(int* ptr = foo())
{
*ptr = 35; // no crash
}
}
More information about the Digitalmars-d
mailing list