when<TResult extends Object?> method

  1. @optionalTypeArgs
TResult when<TResult extends Object?>({
  1. required TResult slp(
    1. SlpTokenTypeValue type,
    2. int number
    ),
  2. required TResult alp(
    1. AlpTokenTypeValue type,
    2. int number
    ),
  3. required TResult unknown(),
})

A switch-like method, using callbacks.

As opposed to map, this offers destructuring. It is equivalent to doing:

switch (sealedClass) {
  case Subclass(:final field):
    return ...;
  case Subclass2(:final field2):
    return ...;
}

Implementation

@optionalTypeArgs TResult when<TResult extends Object?>({required TResult Function( SlpTokenTypeValue type,  int number)  slp,required TResult Function( AlpTokenTypeValue type,  int number)  alp,required TResult Function()  unknown,}) {final _that = this;
switch (_that) {
case SlpTokenType():
return slp(_that.type,_that.number);case AlpTokenType():
return alp(_that.type,_that.number);case UnknownTokenType():
return unknown();}
}