首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >将API调用添加到JS-解释器,以便与自定义块块一起使用。

将API调用添加到JS-解释器,以便与自定义块块一起使用。
EN

Stack Overflow用户
提问于 2019-02-28 11:17:03
回答 1查看 869关注 0票数 0

我想在此开场白,说我是JavaScript的新手,更确切地说是Neil解释器的使用。

我已经做了一些定制块,它们只是创建了JavaScript,当eval()将其块类型的对象和用户输入放入数组中时。

他们使用的函数称为pushInstruction( blockName,inputs);其中输入是块用户输入的数组,blockName是块的名称。

现在我正在尝试使用JS解释器,但问题在于我如何使用这些块。

我渴望得到帮助,而我的生命却找不到任何资源来帮助我。这可能是件愚蠢的事。

自定义块码

代码语言:javascript
运行
AI代码解释
复制
Blockly.Blocks['select_hand_position'] = {
  init: function() {
    this.appendDummyInput()
        .appendField("Move");
    this.appendDummyInput()
        .appendField(new Blockly.FieldDropdown([["left hand","Left hand"], ["right hand","Right hand"]]), "handSelect")
        .appendField("to index")
        .appendField(new Blockly.FieldNumber(0), "indexSelect");
    this.setPreviousStatement(true, null);
    this.setNextStatement(true, null);
    this.setColour(290);
 this.setTooltip("");
 this.setHelpUrl("");
  }
};
Blockly.JavaScript['select_hand_position'] = function(block) {
  var dropdown_handselect = block.getFieldValue('handSelect');
  var number_indexselect = block.getFieldValue('indexSelect'); 
  var input = '["'+dropdown_handselect+'",'+number_indexselect+']';
  var code = 'pushInstruction("select_hand_position",'+input+');'               
  return code;
};

我有一个全局数组来保存对象。

代码语言:javascript
运行
AI代码解释
复制
instructionStructure = new Array();

然后在此函数中使用该函数,其中块生成要使用的代码。

代码语言:javascript
运行
AI代码解释
复制
function pushInstruction(blockName,inputs) {  
  var instruction = null;
  switch(blockName) {
    case "place_book":
    case "grab_book":
    case "select_hand_position":
      instruction = {
        blockName: blockName,
        hand: inputs[0],
        index: inputs[1].toString()
      };
      instructionStructure.push(instruction);
      break;

    default:
      throw 'attempted to push unknown instruction block';
  }       
} 

步进码

下面是在按下步骤按钮的按钮上运行的代码

代码语言:javascript
运行
AI代码解释
复制
function stepCode() {
  Blockly.JavaScript.STATEMENT_PREFIX = 'highlightBlock(%1);\n';
  Blockly.JavaScript.addReservedWords('highlightBlock');
  var code = Blockly.JavaScript.workspaceToCode(workspace);
  var myInterpreter = new Interpreter(code, initApi);
  function nextStep() {
    if (myInterpreter.step()) {
      window.setTimeout(nextStep, 1000);
    }
  }
  nextStep();
  alert(instructionStructure);
}

initAPI函数

这就是我一直得到一个

Uncaught : Interpreter.setProperty不是函数

在线上

Interpreter.setProperty(范围,'pushInstruction',interpreter.createNativeFunction(包装器));

代码语言:javascript
运行
AI代码解释
复制
function initApi(interpreter, scope) {

  var wrapper = function(id) {
    id = id ? id.toString() : '';
    return interpreter.createPrimitive(highlightBlock(id));
  };
  interpreter.setProperty(scope, 'highlightBlock',
      interpreter.createNativeFunction(wrapper));


  wrapper = function(blockName, inputs) {
    return pushInstruction(blockName,inputs);
  };
  Interpreter.setProperty(scope, 'pushInstruction',
      interpreter.createNativeFunction(wrapper));  
}

谢谢您花时间阅读这篇文章,我非常感激!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-28 11:31:00

你在这里有个错误:

代码语言:javascript
运行
AI代码解释
复制
Interpreter.setProperty(scope, 'pushInstruction',
  interpreter.createNativeFunction(wrapper));  

=>

代码语言:javascript
运行
AI代码解释
复制
interpreter.setProperty(scope, 'pushInstruction',
  interpreter.createNativeFunction(wrapper));  

这是给Uncaught TypeError的。这是唯一的问题吗?因为我没有真正的

但问题在于我如何使用这些区块。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54932757

复制
相关文章
VBA代码:将垂直单元格区域转换成水平单元格区域
有时候,我们想将垂直列表中的数据转换为水平列表,通常可以使用数据透视表来完成。假设数据是唯一ID,并且客户端可以附加到相同的唯一ID,如下图1所示。
fanjy
2022/11/16
3790
VBA代码:将垂直单元格区域转换成水平单元格区域
VBA代码:将水平单元格区域转换成垂直单元格区域
下图1所示是一个常见的需求,在多个列中放置着每个月份的数据,需要将月份移到单个列中,同时保留报表中的所有描述性信息。
fanjy
2022/11/16
1.4K0
VBA代码:将水平单元格区域转换成垂直单元格区域
POI判断某个单元格是否是合并单元格
注:比如我们的数据是上面N个单元组成,且每个单元所占行数可能不同。第一列占据一列,中间数据每个占用一个单元格,最后一列与第一列占用相同的行数,这时我们需要获取起始单元格占用几行(起始行--结束行),获取到这些数据后我们就能读取中间单元格数据(这些数据可以作为上面单元的一个属性),下面给出具体代码:
johnhuster的分享
2022/03/28
3.2K0
POI判断某个单元格是否是合并单元格
点击table的td单元格出现dialog弹窗,获取值后将值放回td单元格
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/106388.html原文链接:https://javaforall.cn
全栈程序员站长
2022/06/30
2.4K0
自适应单元格
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/51558231
用户1451823
2018/09/13
3520
Excel公式练习32: 将包含空单元格的多行多列单元格区域转换成单独的列并去掉空单元格
本次的练习是:如下图1所示,单元格区域A1:D6中是一系列数据,其中包含空单元格,现在要将它们放置到一列中,并删除空单元格,如图中所示的单元格区域G1:G13,如何使用公式实现?
fanjy
2020/02/18
2.5K0
Excel公式技巧13: 从字符串中提取数字——将所有数字提取到单个单元格
前三篇文章分别讲解了提取位于字符串开头和末尾的数字的公式技术、提取字符串中所有的数字并放在不同的单元格中的公式技术,本文研究从字符串中提取所有数字并将这些数字作为单个数字放置在单个单元格中的技术。
fanjy
2020/03/16
2.7K0
将Power Pivot模型数据取值到单元格中
在Excel中,使用Power Pivot搭建的模型通常用透视表展现结果,如下图所示。
wujunmin
2021/09/07
1.5K0
将Power Pivot模型数据取值到单元格中
VBA: 禁止单元格移动,防止单元格公式引用失效
文章背景: 在工作生活中,存在文件共享的情况。在数据处理时,单元格公式中往往要引用原始数据源。多人操作时,每个人的操作习惯不同,如果数据源的单元格不小心被人为移动或删除,会导致单元格公式引用失效,产生#REF! 错误。如果进行的是跨表引用,这种错误往往还很难发现。
Exploring
2022/09/20
8080
POI合并单元格
核心代码: CellRangeAddress region = new CellRangeAddress(rowNum2-(chongfucishu-1), rowNum2, 0, 0); sheet2.addMergedRegion(region); //year1 年份重复的 for (String key : map_year1.keySet()) { String years = key;//重
手撕代码八百里
2020/07/28
1.4K0
关于单元格属性
在皕杰报表文本单元格属性中,有“数据值”,“显示值”和下“显示格式”三个属性,数据值是单元格的真实值,当单元格被引用时,引用的就是单元格的真实值;显示值是在报表展现时所显示的内容,仅仅用来显示;显示格式是当报表展现时的所展现的格式。通常我们在数据表里取出的某个字段的值是一个代号,但我们展现出来的报表,并不希望显示代号,希望显示的是每个代号代表的具体值,这时就要用到显示值的属性。
用户10133222
2022/11/21
4250
VBA专题13:引用单元格/单元格区域的方法
在VBA中,可以通过多种不同的方式来引用工作表中的单元格/单元格区域。下面是一些引用方法的汇总。
fanjy
2021/08/31
4K0
怎样将Excel包含某字符的单元格填充颜色
  在处理数据的时候,xmyanke想将Excel中包含某字符的单元格填充蓝色,比较容易看清,弄了好一阵子都没完成,最后试用条件格式处理了一下,终于实现了。   比如要将A1到A12区间包含数字1的单
ytkah
2018/03/05
3.1K0
怎样将Excel包含某字符的单元格填充颜色
Excel公式练习33: 将包含空单元格的多行多列单元格区域转换成单独的列并去掉空单元格(续)
本次的练习是:这个练习题与本系列上篇文章的练习题相同,如下图1所示,不同的是,上篇文章中将单元格区域A1:D6中的数据(其中包含空单元格)转换到单独的列(如图中所示的单元格区域G1:G13)中时,是以行的方式进行的,即先放置第1行中的数据、再放置第2行……依此类推。这里,需要以列的方式进行,即先放置第1列中的数据、再放置第2列中的数据……依此类推,最终结果如图中所示的单元格区域H1:H13,如何使用公式实现?
fanjy
2020/02/18
2.4K0
cssjshtml 单元格合并
function MergeCell(tableId, startRow, endRow, col) { var tb = document.getElementById(tableId); if (col >= tb.rows[0].cells.length) { return; } //当检查第0列时检查所有行 if (col == 0) { endRow = tb
葫芦
2019/04/17
1.4K0
单元格自动计算
在我们填报报表时,有的单元格的数据是需要通过自动计算直接获得,但是不是所有的函数都支持填报自动计算,这是为什么呢?
用户10133222
2022/12/15
3260
Excel技巧:使用上方单元格的值填充空单元格
有时候,工作表列中有许多空单元格,而不是在每行都重复相同的内容,这样可以使报表更容易阅读,然而也会导致一些问题,例如不方便排序或筛选数据。
fanjy
2022/04/13
3.5K0
Excel技巧:使用上方单元格的值填充空单元格
VBA: 禁止单元格移动,防止单元格公式引用失效(2)
文章背景: 在Excel中,公式引用无效单元格时将显示 #REF! 错误。当公式所引用的单元格被删除或被粘贴覆盖时最常发生这种情况。
Exploring
2022/09/20
1.3K0
VBA: 判断单元格区域内是否存在合并单元格
文章背景: 工作中,有时需要判断单元格区域内是否存在合并单元格,这时,可以用到Range.MergeCells属性。
Exploring
2023/10/22
2.4K0
VBA: 判断单元格区域内是否存在合并单元格
Excel公式技巧90:剔除单元格区域中的空单元格
有时候,在一列数据中有许多空单元格,导致数据不连续,我们需要剔除这些空单元格,让数据区域连起来。
fanjy
2021/07/12
4.7K0
Excel公式技巧90:剔除单元格区域中的空单元格

相似问题

在google电子表格中操作单个单元格

12

将单元格跨几行折叠为R数据帧中的单个列

310

Google电子表格:单个单元格的电子邮件通知

314

Google电子表格脚本-获取单个引用单元格的getColumn

23

Google电子表格单元格引用合并单元格

46
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档