我是Python新手。有人能解释函子值的来源吗。函子=函数函数,但是没有解释函子这个词,我试着在谷歌上搜索,却一无所获。另外,.val关键字在任何地方都没有解释,我可能有点模糊,但我找不到任何例子。
def process_action(self, msg, sender):
assert msg.get_type() == pedroclient.PObject.structtype
functor = msg.functor
assert functor.get_type() == pedroclient.PObject.atomtype
cmd_type = functor.val
cmd = msg.args[0]
if cmd_type == 'stop_':
assert cmd.get_type() == pedroclient.PObject.structtype
cmd_functor = cmd.functor.val
#if cmd_functor in ['pickup', 'putdown']:
self.stop_arm(cmd.args[0].val)
#else:
# self.stop_arm(cmd.args[0].val)
elif cmd_type in ['start_', 'mod_']:
self.start_animate()
assert cmd.get_type() == pedroclient.PObject.structtype
cmd_functor = cmd.functor.val
if cmd_functor == 'pickup':
self.pickup(cmd.args[0].val, cmd.args[1].val, sender)
elif cmd_functor == 'putdown':
if cmd.args[1].get_type() == pedroclient.PObject.inttype:
self.putdown_on_block(cmd.args[0].val, cmd.args[1].val,
sender)
else:
self.putdown_on_table(cmd.args[0].val, cmd.args[1].val,
sender)
elif cmd_functor == 'go_home':
self.go_home(cmd.args[0].val)
编辑:对不起,还有很多代码,我已经尽我所能略过了。
^{pr2}$我能理解的最好的是函子是msg的一个属性,msg又是系统输入的参数,其中系统输入是一个事件通知。我是正确的还是完全走错了方向。
通过谷歌搜索,我找到了一些文档,这些文档可能可以解释您: The Pedro 1.6 Reference Manual
关于
functor
我没有找到一个关于这个的not about(但是没有花太多时间在上面)。很有可能,Pedro被用作向某种(真实或虚拟)机器人发送命令的消息传递系统。机器人是由信息控制的,这些信息具有某种结构,包括函子,它可能是应该执行的动作类型的标识,以及定义动作参数的值。在基本内容-msg&functor可能在以下位置:
.val-这很可能是包含数据的属性。我找不到任何类型的Python关键字。我相信你认为它可能是“价值”的缩写。它要么定义在它所属的对象中(函子,命令行参数[]),或者在某个高级对象中导入并从中继承val。在
由于Python允许函数作为值传递,函子基本上是一个对象,它是一个函数。请注意,在您发布的代码中,您会多次比较这是哪个函数。在
在
cmd_type = functor.val
行中,您实际上将其归因于cmd_,然后键入该函数本身,然后对其进行比较,以确定它到底是哪个函数。在if cmd_type == 'stop_':
函数是stop()吗?在
elif cmd_type in ['start_', 'mod_']:
是这些函数之一,start(),mod()?在
等等。。。进一步阅读here
Edit:我发现this主题与理解函子的概念非常相关,尽管它没有引用python,但是python有很多函数式编程特性。在
相关问题 更多 >
编程相关推荐