gpt4 book ai didi

dart - 格式错误的类型:…在这种情况下使用 'some-object'无效

转载 作者:行者123 更新时间:2023-12-03 04:05:04 25 4
gpt4 key购买 nike

我不确定是什么问题,还是运行时错误试图告诉我。我有一个试图在类的构造期间分配对象的类,但是,出现以下运行时错误:

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com