is(this : myClass)

Igor stojkovic.igor at gmail.com
Sat Oct 21 09:00:54 UTC 2017


On Friday, 20 October 2017 at 23:24:17 UTC, Patrick wrote:
> On Friday, 20 October 2017 at 23:01:25 UTC, Steven 
> Schveighoffer wrote:
>> On 10/20/17 6:23 PM, Patrick wrote:
>>> On Friday, 20 October 2017 at 22:15:36 UTC, Steven 
>>> Schveighoffer wrote:
>>>> On 10/20/17 5:55 PM, Patrick wrote:
>>>>> Due to the very specific nature of the 'is' operator, why 
>>>>> wouldn't the compiler know to implicitly query the class 
>>>>> types? Why must it be explicitly written, typeof(this)?
>>>>
>>>> The compiler generally doesn't "fix" errors for you, it 
>>>> tells you there is a problem, and then you have to fix it. 
>>>> You have to be clear and unambiguous to the compiler. 
>>>> Otherwise debugging would be hell.
>>>>
>>> Not asking the compiler to fix my errors.
>>> 
>>> When would
>>> is(this, myClass) not mean: is(typeof(this) : 
>>> typeof(myClass))?
>>
>> class C
>> {
>> }
>>
>> int c;
>>
>> C myC;
>>
>> is(myC : c);
>>
>> oops, forgot to capitalize. But compiler says "I know, you 
>> really meant is(typeof(myC) : typeof(c)) -> false.
>>
>> -Steve
>
> If I explicitly wrote: is(typeof(myC) : typeof(c)) the outcome 
> would still be false and it would still require debugging. So 
> your example demonstrates nothing other then a type-o was made. 
> Try again...
>
> In this unique case, the compiler should identify the class and 
> primitive types are incompatible and should issue an error 
> instead (and not return false).
>
> Patrick

But with the current compiler you would never write

is(typeOf(myC) : typeof(c))

if in your mind "c" is actually a class "C" because if that is in 
your mind you would just write

is(typeof(myC) : c)

which would get you the error. You only need typeof(variable) to 
get to the type, there is no point in doing typeof(type), you 
just write type and C is a type. Right?


More information about the Digitalmars-d-learn mailing list