有些函数或变量是多个积木共用的,我们将其称为公共函数或变量。我们可以通过配置 Python 公共代码来统一定义和修改这些函数或变量。
配置 Python 公共代码的方法有多种,本文将介绍其中三种:
- 方法一:在帽子积木中添加
- 方法二:修改转码模板
- 方法三:在中间件中定义
在帽子积木中添加
转码的积木通常都会拼接在“当 xx 启动时”的帽子积木下面,因此我们可以将公共代码添加在帽子积木的“lib”中。
转码后如下所示:
:::info
优点:可以在拼接积木的时候实时看到转码效果
缺点:代码较分散且依赖特定的积木
:::
修改转码模板
在配置扩展或设备时,选择“转码设置”页签,将支持的转码语言设置为 Python,然后修改“Python 转码模板”。
将 add 函数放在 “### code #$$” 前面,如下所示:
# generated by mBlock5 for <product>
# codes make you happy
### import #$$
### lib #$$
###
# initialize variables
###{
(this.$ALL_VARIABLES.length === 0) ? undefined : this.$ALL_VARIABLES.map(n => n + ' = 0').join('\\n')
}#$$
#$$
def add(a, b):
print('%d+%d=%d'%(a,b,a+b))
### code #$$
###
while True:
# every tick
### loop #$$
#$$
:::info
优点:可以在拼接积木的时候实时看到转码效果
缺点:如果公共代码太多,会影响转码模板的直观性、增加维护的难度。
:::
在中间件中定义
在配置扩展时,选择“基础信息”页签,然后配置中间件。
在配置设备时,选择“连接配置”页签,然后配置中间件。
以配置设备的中间件为例:
1、点击 “+” 添加一个中间件。
2、设置中间件的名称。
3、勾选自定义。
4、编辑代码。
这里的代码就是所有积木转码后的字符串,我们可以在这里将需要的公共代码插入进去,然后将代码返回,如下所示:
/**
* Custom Upload Middleware
*
* @param {AppContext} app
* @param {DeviceContext} device
* @param {String} code
* @param {Object} params
* @param {Function} logH
* @param {Function} progessH
*/
(app, device, code, params, logH, progessH) => {
// process code here
code += 'def add(a,b):
print('%d+%d=%d'%(a,b,a+b))\n';
return code;
}
:::info
优点:不想其他人直接在转码区看到的代码可以写在中间件里。
缺点:在转码区无法直观看到转码效果,只有在点击“上传”的时候才会生效。
:::
总结
方法一:上手容易,无需额外学习。推荐指数:★★★★★
方法二:上手容易,但是代码量太大会影响模板的维护。推荐指数:★★
方法三:上手有一定难度,而且不直观,比较偏骇客。推荐指数: ★