www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - null and initialized string comparisons

reply Martin <martin.brzenska googlemail.com> writes:
Hi,

is this how it supposed to be? (https://run.dlang.io/is/7B4irm)
---
string a = null;
string t = "";

assert( ! a );
assert( t );
assert( t == a );
---

I have not expected assert(t == a) to be true - i would like to 
know the argument for why this is correct when at the same time 
assert(!a) and assert(t) is true.. feels a litle bit js-ish to me
Feb 17 2021
parent reply Adam D. Ruppe <destructionator gmail.com> writes:
On Wednesday, 17 February 2021 at 20:48:22 UTC, Martin wrote:
 is this how it supposed to be? (https://run.dlang.io/is/7B4irm)
== compares contents. Both null and "" have empty contents and are interchangable for operators that work on contents. The assert just looks at the pointer, not contents. The `is` operator also looks at pointer (and length).
Feb 17 2021
parent Steven Schveighoffer <schveiguy gmail.com> writes:
On 2/17/21 4:16 PM, Adam D. Ruppe wrote:
 On Wednesday, 17 February 2021 at 20:48:22 UTC, Martin wrote:
 is this how it supposed to be? (https://run.dlang.io/is/7B4irm)
== compares contents. Both null and "" have empty contents and are interchangable for operators that work on contents. The assert just looks at the pointer, not contents. The `is` operator also looks at pointer (and length).
assert (and if, and using boolean operators) looks at the pointer and length, the same as `is`. -Steve
Feb 18 2021