ChucK跨文件调用类报错:未定义类型'Foo'问题求助
ChucK跨文件调用类报错的解决办法
问题根源
Machine.add() 是异步加载文件的,你在调用 Foo foo; 的时候,foo.ck 里的类定义还没完成编译加载,所以才会报类型未定义的错误。
两种可行的解决方法
方法一:用同步加载的 Machine.compile()
把 Machine.add() 换成 Machine.compile(),它会同步完成文件的编译和加载,确保类定义在后续代码执行前就生效。修改后的 using_foo.ck 代码如下:
Machine.compile("foo.ck"); Foo foo;
方法二:给 Machine.add() 加上等待逻辑
如果一定要用 Machine.add(),可以通过事件等待确保文件加载完成后再使用类:
event loaded; Machine.add("foo.ck", loaded); loaded => now; // 等待加载完成 Foo foo;
额外提醒
- 要保证
foo.ck和using_foo.ck在同一个目录,或者填写文件的完整路径 - 你的ChucK版本1.5.0.0完全支持这两种方法,不用升级版本
内容的提问来源于stack exchange,提问作者Thiago Skapata
相关产品推荐
相关产品推荐

