when<TResult extends Object?> method
TResult
when<TResult extends Object?>(
- TResult $default(), {
- required TResult spKeys(),
- required TResult spGetValue(
- String data
- required TResult setNewStringValue(),
- required TResult setNewBoolValue(),
- required TResult setNewIntValue(),
- required TResult setNewDoubleValue(),
- required TResult removeSPKey(
- String key
- required TResult removeAllKey(),
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?>(
TResult Function() $default, {
required TResult Function() spKeys,
required TResult Function(String data) spGetValue,
required TResult Function(String key, String newValue) setNewStringValue,
required TResult Function(String key, bool newValue) setNewBoolValue,
required TResult Function(String key, int newValue) setNewIntValue,
required TResult Function(String key, double newValue) setNewDoubleValue,
required TResult Function(String key) removeSPKey,
required TResult Function() removeAllKey,
}) {
final _that = this;
switch (_that) {
case SwiftActionDefault():
return $default();
case SwiftSpKeysAction():
return spKeys();
case SwiftSpGetValueAction():
return spGetValue(_that.data);
case SwiftSetNewStringValueAction():
return setNewStringValue(_that.key, _that.newValue);
case SwiftSetNewBoolValueAction():
return setNewBoolValue(_that.key, _that.newValue);
case SwiftSetNewIntValueAction():
return setNewIntValue(_that.key, _that.newValue);
case SwiftSetNewDoubleValueAction():
return setNewDoubleValue(_that.key, _that.newValue);
case SwiftRemoveSpKeyAction():
return removeSPKey(_that.key);
case SwiftRemoveSpAllKeysAction():
return removeAllKey();
}
}