字段是代码生成的重要组成部分,因为它们定义了字符串、数字和颜色等用户可修改的值。
在生成的代码中包含字段值时,需要获取字段的值,将其转换为可用的字符串,然后将该字符串与其余代码串联。
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'));
变量
代码生成器需要先清理变量名称,然后才能进行串联。这是必要的,原因有两:
- 变量由用户选择的语言输入。这意味着,这些字符可能需要转换为 ASCII 字符。例如,“
متغير
”将转换为“_D9_85_D8_AA_D8_BA_D9_8A_D8_B1
”。 - 变量可能与保留字冲突。这意味着,您可能需要修改它们,以避免它们发生冲突。例如,“
for
”将转换为“for2
”。
const identifier = generator.getVariableName(block.getFieldValue('VAR'));
串联代码
获取字段的值并将其转换为字符串后,您可以将其与代码字符串串联到正确的位置。
const code = `some code ${value} some more code`;
返回代码
不同类型的代码块需要以不同的方式返回代码字符串,因此请查看其各自的页面,了解详情: