tryParse<R extends num, I extends num> static method

Complex<R, I>? tryParse<R extends num, I extends num>(
  1. String source
)

Parse source as a complex literal and return its value.

Like Complex.parse, except that this function returns null for invalid inputs instead of throwing.

Example:

var value = Complex.tryParse('3.14'); // 3.14+0i
value = Complex.tryParse('  3'); // 3+0i
value = Complex.tryParse('1+5i'); // 1+5i
value = Complex.tryParse('.0'); // 0.0
value = Complex.tryParse('  1+ 5i '); // 1+5i
value = Complex.tryParse('6i'); // 0+6i
value = Complex.tryParse('a'); // null
value = Complex.tryParse('0xFF'); // 255+0𝑖

Implementation

static Complex<R, I>? tryParse<R extends num, I extends num>(String source) {
  final split = _spliter(source);
  R? r;
  I? i;
  if (split.isEmpty || split.length != 2) {
    return null;
  }

  r = _typeParsing<R>(split[0]);

  i = _typeParsing<I>(split[split.length - 1]);

  if (r == null || i == null) {
    return null;
  }

  return Complex<R, I>(r, i);
}