Question regarding Object Tree Page 62 [PDF]

Where does ‘var’ and ‘dynamic’ fit into the object tree?

var and dynamic are not objects (or types) themselves so they don’t fit into the object tree.

var

var is a keyword and is short for “variable”. When you use it you are letting Dart infer the type from whatever the value of the variable is. For example:

var x = 1;

Since 1 is an integer, Dart infers the type to be int. You use var to tell Dart that you want to change the value later. Like this:

var x = 1;
x = 2;

var, final and const all are related keywords because they all let Dart infer the type.

dynamic

dynamic is also not really a type by itself. Rather, you use this keyword to tell Dart that you don’t want to use any type checking. This is fine:

dynamic x = 1;
x = 'hello';
x = true;
x = null;

If you want to compare dynamic to a type, it is most similar to Object? since everything is a subtype of Object?, even nullable values. This is fine:

Object? x = 1;
x = 'hello';
x = true;
x = null;

However, saying that you can use any object type (Object?) is not quite the same as saying that you don’t care about the type (dynamic).

3 Likes

@suragch makes sense. Thank you for your reply.

1 Like

Just to clarify — I can’t see anything about var, dynamic or object tree at the page 62 of PDF version of Dart Apprentice: Fundamentals book. Looks like you are talking about another book, aren’t you?

The keywords var and dynamic are discussed elsewhere in Dart Apprentice: Fundamentals, just not on that particular page. These keywords occur in the same location when declaring a variable as type names like Object, int and String do, so it’s easy to assume that var and dynamic should also fit somewhere into the hierarchy of Dart types represented by the Object Tree diagram. I believe that’s what led to the original question from the reader above.

3 Likes