我很熟悉打字推理。var x = 5;使x为int类型。但是,向上型推理和向下型推理实际上意味着什么。任何简单的例子帮助将是非常感谢的。
发布于 2022-03-21 21:10:37
自下而上(向上)推理是指已知表达式组成部分的类型,并由此推断复合表达式的类型。示例:
var x = 5; // `x` is inferred to be an integer.
var y = someString + someOtherString; ; // `y` is inferred to be a string.
// `list` is inferred to be an array/list of strings.
var list = ['foo', 'bar', 'baz'];
// If `someFunction` is generic, its type is determined from `x` and `y`.
someFunction(x, y); 自上而下的(向下)推断正好相反:复合表达式的类型是已知的,而构成部分的类型是从它们推断出来的。示例:
// `[]` is inferred to be a `List<int>`.
List<int> list = [];
// The type of `element` is inferred from the type of `list`, which in this
// case is `int`.
var squares = list.map((element) => element * element);您应该从表达式树的角度来考虑方向。例如:
operation
/ \
argument1 argument2从参数推断操作的类型将是自下而上的;从操作中推断参数的类型将是自顶向下的。(这类似于自下而上和自上而下的解析。)
https://stackoverflow.com/questions/71555932
复制相似问题