如何组织Telegram机器人的可用命令字典?优秀的程序员如何做到这一点?我知道写几十个if
语句是个坏主意,还有switch
语句。
目前,它是使用switch
实现的:
switch
但是当有许多命令时,switch
运算符变得难以维护。解决这个问题的常用方法是什么?
答案 0 :(得分:1)
我不是Python编码器,但似乎您的问题应该使用associative array数据结构来解决,无论您使用哪种语言。结构的实际名称可能因语言而异:例如,在C ++中,它被称为map
,在Python中,它是...... dictionary!因此,您多次在您的问题中写下相关的关键字(即使是原始语言)。
考虑到上述情况,您的程序草图可能如下所示:
#!/usr/bin/python
# Command processing functions:
def func1():
return "Response 1"
def func2():
return "Response 2"
# Commands dictionary:
d = {"cmd1":func1, "cmd2":func2}
# Suppose this command was receiced by the bot:
command_received = "cmd1"
# Processing:
try:
response = d[command_received]()
except KeyError:
response = "Unknown command"
# Sending response:
print response