checkValidRange 静态方法
检查一个范围是否代表一个可索引对象的切片。
如果该范围对于给定 length
的可索引对象无效,则抛出异常。一个范围对于给定 length
的可索引对象有效
如果 0 <= [start] <= [end] <= [length]
。当 end
为 null
时,视为等效于 length
。
startName
和 endName
的默认值分别为 "start"
和 "end"
。
返回实际 end
值,如果 end
是 null
,则为 length
,否则为 end
。
实现
static int checkValidRange(int start, int? end, int length,
[String? startName, String? endName, String? message]) {
// Comparing with `0` as receiver produces better dart2js type inference.
// Ditto `start > end` below.
if (0 > start || start > length) {
startName ??= "start";
throw RangeError.range(start, 0, length, startName, message);
}
if (end != null) {
if (start > end || end > length) {
endName ??= "end";
throw RangeError.range(end, start, length, endName, message);
}
return end;
}
return length;
}