字段

字段是代码生成的重要组成部分,因为它们定义了字符串、数字和颜色等用户可修改的值。

在生成的代码中包含字段值时,需要获取字段的值,将其转换为可用的字符串,然后将该字符串与其余代码串联。

import {javascriptGenerator} from 'blockly/javascript';

javascriptGenerator.forBlock['my_custom_block'] = function(block, generator) {
  // Get the field value.
  const fieldValue = block.getFieldValue('MY_FIELD');

  // Concatenate the code.
  const code = `some code ${fieldValue} some more code`;

  // Return the code.
  return code;
}

获取值

您可以使用 getFieldValue 访问字段值。返回的内容因字段而异,因此您应查看内置字段文档,了解关于特定字段的信息。例如,文本输入字段会返回用户输入的确切文本,但下拉菜单字段会返回与用户选择的项关联的语言中性字符串。

转换值

大多数字段值都可以立即连接到代码字符串。不过,有些字段值需要执行额外的操作才能使用。

字符串

字符串需要由代码生成器引用,然后才能进行串联。

// For a single line text field.
const str = generator.quote_(block.getFieldValue('STR'));

// For a multiline text field.
const str = generator.multiline_quote_(block.getFieldValue('STR'));

变量

代码生成器需要先清理变量名称,然后才能进行串联。这是必要的,原因有两:

  1. 变量由用户选择的语言输入。这意味着,这些字符可能需要转换为 ASCII 字符。例如,“متغير”将转换为“_D9_85_D8_AA_D8_BA_D9_8A_D8_B1”。
  2. 变量可能与保留字冲突。这意味着,您可能需要修改它们,以避免它们发生冲突。例如,“for”将转换为“for2”。
const identifier = generator.getVariableName(block.getFieldValue('VAR'));

串联代码

获取字段的值并将其转换为字符串后,您可以将其与代码字符串串联到正确的位置。

const code = `some code ${value} some more code`;

返回代码

不同类型的代码块需要以不同的方式返回代码字符串,因此请查看其各自的页面,了解详情: