字段是代码生成过程的重要组成部分,因为它们定义了 用户可修改的值,如字符串、数字和颜色等。
在生成的代码中添加字段值涉及获取字段的值, 再将该字符串转换成可用的字符串,然后将该字符串与 代码。
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`;
返回代码
不同类型的代码块需要以不同的 因此请查看其各自的网页以了解详情: