What is the syntax for implicit cast operator in d

2019-06-17 10:57发布

问题:

I would like to cast instances of my custom class A to int. What is the syntax of the implicit cast operator? (I thought I remembered that there is such a feature but I can't find it on the web)

int a = (new A());

回答1:

Type annotations are not allowed to affect behavior in Dart. If you're not running in checked mode, then this:

int a = new A();

will work the same as this:

var a = new A();

at run-time. In other words, when not in checked mode, you're welcome to store your A in a variable annotated as an int, but no actual conversion takes place.

If you are running in checked mode, the first form will give you a runtime exception.

I'm not sure, but I think what you're asking for is a way to define a conversion between your class A and int that will happen automatically when "cast" to an int. No such thing exists, to my knowledge. You should simply define a method to do so. For example:

int a = new A().to_i();


回答2:

You can also use as to help tell the tools "no, really, treat this object as this type".

A good example of this is when you have to deal with dart:html's querySelector() function.

FormElement form = querySelector('#sign-up') as FormElement;

In the above, the object returned by querySelector('#sign-up') is checked that it is really an instance of FormElement.

Learn more at https://www.dartlang.org/docs/dart-up-and-running/ch02.html#operators



标签: dart