Monkey C代码数组赋值报错求助:提示‘No viable alternative...’
问题解决:Monkey C中数组初始化语法错误修复
- 你的报错核心是Monkey C的字典(对象)字面量语法与JavaScript不同,误用了JS风格的
key: value写法,导致编译器无法解析。 - 错误信息里的
No viable alternative at input '[n {shuttles:'是因为编译器不认识{shuttles:这种写法,extraneous input ','则是语法错误连锁引发的后续报错。
错误写法示例(你可能的代码)
function initialize() { View.initialize(); // 错误:使用了JS风格的对象字面量 var levelData = [ {shuttles: 1, speed: 8.0}, {shuttles: 2, speed: 8.5} ]; }
正确写法(Monkey C规范)
Monkey C中创建字典需要用冒号前缀的键名,格式为{:key value, :key2 value2},修正后的代码:
function initialize() { View.initialize(); var levelData = [ {:shuttles 1, :speed 8.0}, {:shuttles 2, :speed 8.5} ]; }
额外注意事项
- 数组最后一个元素后不要加多余逗号,部分Monkey C编译器对尾随逗号敏感,会触发类似
extraneous input ','的报错。 - 如果
levelData是类的成员变量,需要在类定义里声明类型,示例:class BeepTestApplicationView extends WatchUi.View { private var _levelData as Array<Dictionary>; function initialize() { View.initialize(); _levelData = [ {:shuttles 1, :speed 8.0}, {:shuttles 2, :speed 8.5} ]; } }
内容的提问来源于stack exchange,提问作者Thom Norris
相关产品推荐
相关产品推荐

