我不确定是什么问题,还是运行时错误试图告诉我。我有一个试图在类的构造期间分配对象的类,但是,出现以下运行时错误:
malformed type: line 150 pos 26: using 'type_tree' in this context is invalid _output_type = new **type_tree.asUnknown();**
因此,我在构造期间无法分配的类思维上添加了一种测试方法:
class X {
X() {
type_tree doh = new type_tree.asUnknown(); <--- runtime error
}
void bogus() {
type_tree output_type = new type_tree.asUnknown();
}
}
...
X x = new X();
x.bogus(); <-- runtime error as well
但是我可以在类之外分配 type_tree 对象:
type_tree obj = new type_tree.asUnknown(); <-- works
我以前从未遇到过这种类型的运行时错误,也无法弄清楚问题出在哪里。关于寻找什么的任何想法?
下面是该代码的更详细的版本。
type_tree.dart
part of OpenCog.moses;
class type_tree extends NTree<type_node> {
// Basic named constructors
type_tree.asUnknown() {...}
type_tree.asIllFormed() {...}
}
procedure_call_base.dart
part of OpenCog.moses;
class ProcedureCallBase extends operator_base {
type_tree _output_type;
factory ProcedureCallBase.from(...) {
ProcedureCallBase(String name, int arity, combo_tree tr,
[bool infer_type = false]) : super(name),
_arity = arity,
_body = tr {
_output_type = new type_tree.asUnknown(); <-- runtime error
}
...
ProcedureCallBase v = new ProcedureCallBase(name, arity, tr, infer_type);
return v;
}
// A test method called in unit test.
void bogus() {
type_tree output_type = new type_tree.asUnknown(); <-- also fails at runtime
}
}
单元测试代码:
test("Check valid definition", () {
String proc = r"add(2) := +($1 $2)";
ProcedureCallBase v = new ProcedureCallBase.from(proc); <-- fails in the constructor
v.bogus(); <-- fails inside bogus method
});
test("Check type tree", () {
type_tree doh = new type_tree.asUnknown(); <-- this works.
});
基本上由于某种原因,在 ProcedureCallBase 的上下文中,我无法创建type_tree对象,我也不知道为什么。
Dart版本:1.21.0-dev.11.2
最佳答案
可能是名称冲突。我已经看到分析仪不能在所有情况下都捕获到这些。
关于dart - 格式错误的类型:…在这种情况下使用 'some-object'无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40936555/