On Tuesday, 11 October 2016 at 07:55:36 UTC, orip wrote:
I get "Error: mismatched function return type inference" errors with choosing the return type for functions that work on ranges using, e.g, std.algorithm or std.range functions, but have different behavior based on runtime values. The return type is always a range with the same underlying type.

Here's an example:

auto foo(int[] ints) {
  import std.range;
  if (ints.length > 10) {
    return chain(ints[0..5], ints[8..$]);
  } else {
//return ints; // Error: mismatched function return type inference of int[] and Result return chain(ints[0..0], ints[0..$]); // This workaround compiles
  }
}

Is there a compatible return type that can be used, or some other workaround? I couldn't find one when searching for the error or looking at the phobos source code.

Thanks! orip

Rewrite `return chain(ints[0..5], ints[8..$]);` as `return ints[0..5] ~ ints[8..$];`

The `chain` function doesn't return an array, it returns a lazily-evaluated sequence of an entirely different type from `int[]`.

Reply via email to