Not quite. The type of a variable in your code is indeed Console but the type 
of b is ViewportConsole. It's a subtle difference: in the seq exemple it's a 
variable of a type Console which stores a value of ViewportConsole. The 
difference is: 
    
    
    # in seq example:
    consoles[0] of Console          # true
    consoles[1] of ViewportConsole  # true, it is ViewportConsole type value
    consoles[0] is Console          # true
    consoles[1] is ViewportConsole  # false, it is Console type variable
    
    # in var example:
    a of Console          # true
    a of ViewportConsole  # true
    a is Console          # true
    a is ViewportConsole  # true
    

It's similar to many other languages, some of which reflect the difference 
using very explicit syntax:

  * Ada -- Console vs Console'class
  * Fortran -- type(Console) vs class(Console)


Reply via email to