JavaScript Blockly.FieldDropdown参数

JavaScript Blockly.FieldDropdown参数,javascript,parameters,blockly,Javascript,Parameters,Blockly,我正在做一个javascript库项目,我不知道Blockly.FieldDropdown函数的menuGenerator变量接受什么类型的参数。 在这里,您可以看到一些感兴趣的代码: /** * Class for an editable dropdown field. * @param {(!Array.<!Array>|!Function)} menuGenerator An array of options * for a dropdown list, or a fu

我正在做一个javascript库项目,我不知道Blockly.FieldDropdown函数的menuGenerator变量接受什么类型的参数。 在这里,您可以看到一些感兴趣的代码:

/**
* Class for an editable dropdown field.
* @param {(!Array.<!Array>|!Function)} menuGenerator An array of options
*     for a dropdown list, or a function which generates these options.
* @param {Function=} opt_validator A function that is executed when a new
*     option is selected, with the newly selected value as i ts sole 
argument.
*     If it returns a value, that value (which must be one of the options) 
will
*     become selected in place of the newly selected option, unless the 
return
*     value is null, in which case the change is aborted.
* @extends {Blockly.Field}
* @constructor
*/
Blockly.FieldDropdown = function(menuGenerator, opt_validator) {
/**
*为可编辑的下拉字段初始化。
*@param{(!Array.|!Function)}菜单生成器选项数组
*用于下拉列表或生成这些选项的函数。
*@param{Function=}opt_验证器当新的
*选项被选中,新选择的值作为唯一值
论点
*如果返回值,则返回该值(必须是选项之一)
将
*变为“选定”以代替新选定的选项,除非
返回
*值为null,在这种情况下,更改将中止。
*@extends{Blockly.Field}
*@constructor
*/
Blockly.FieldDropdown=函数(菜单生成器、opt_验证器){
我不明白@param{(!Array.|!Function)}是什么意思

有更多的信息和示例,包括下拉选项的基本结构以及如何创建一个

基本结构是:

每个下拉菜单都创建有一个菜单选项列表。每个选项 由两个字符串组成。第一个字符串是要 第二个是字符串常量,在保存 选择XML。此分隔允许更改下拉菜单的设置 保存在不同语言之间。例如,英语版本的 块可以定义
[['left',left'],['right',right']]
,而德语 同一块的版本将定义
[['links','LEFT'],['rechts','RIGHT']]

对于动态菜单:

您可以提供一个 函数,调用时返回选项列表。每次 菜单打开,调用该函数并显示选项 重新计算

如果
menuGenerator
是一个数组,则使用它;如果它是一个函数,则在打开菜单时运行。该函数不接受任何参数;它返回一个选项列表,其结构如上所述