isThisType method

bool isThisType(
  1. dynamic instance,
  2. bool question
)

判断实例是否为该包装类型的实例

Implementation

bool isThisType(dynamic instance, bool question) {
  final logic = VmObject.readLogic(instance);
  if (logic is VmValue && logic._valueType.identifier == identifier) return true; //先使用逻辑值进行判断
  final value = VmObject.readValue(instance);
  if (value is VmSuper && value._hasClassIdentifier(identifier)) return true; //再使用原生值进行判断
  if (value == null && question) return true; //对带'?'的可Null类型的判断
  if (isExternal) {
    return value is T; //外部类型的原生值value如果为VmSuper类型,则已经在前面进行了初步判断。这里使用is表达式即可。
  } else {
    return false; //内部类型的原生值value必定为VmSuper类型,则已经在前面进行了精确判断。这里直接返回false即可。
  }
}