我可以使用dictonary方法,还是有更好的方法来做到这一点?
if data_msb=='1' or data_lsb=='1' or addr_msb=='1' or addr_lsb=='1':
print_hex_vector(hexF,hex1,modify_vector,output_file,line)
if data_msb=='2' or data_lsb=='2' or addr_msb=='2' or addr_lsb=='2':
print_hex_vector(hexF,hex2,modify_vector,output_file,line)
if data_msb=='3' or data_lsb=='3' or addr_msb=='3' or addr_lsb=='3':
print_hex_vector(hexF,hex3,modify_vector,output_file,line)
if data_msb=='4' or data_lsb=='4' or addr_msb=='4' or addr_lsb=='4':
print_hex_vector(hexF,hex4,modify_vector,output_file,line)
if data_msb=='5' or data_lsb=='5' or addr_msb=='5' or addr_lsb=='5':
print_hex_vector(hexF,hex5,modify_vector,output_file,line)
if data_msb=='6' or data_lsb=='6' or addr_msb=='6' or addr_lsb=='6':
print_hex_vector(hexF,hex6,modify_vector,output_file,line)
答案 0 :(得分:1)
为什么不将所有org-link-set-parameters
变量放在列表中并迭代它?
hexN
答案 1 :(得分:0)
喜欢 Dijstra 说:
“两个或更多,使用
for
” - Edsger W. Dijstra
这实际上是反对复制粘贴和轻微修改代码的口头禅。从你必须这样做的那一刻起,你应该开始考虑“我如何概括这个?”。
如何使用:
setvals = {data_msb,data_lsb,addr_msb,addr_lsb}
for vl,hx in [('1',hex1),('2',hex2),('3',hex3),('4',hex4),('5',hex5),('6',hex6)]:
if vl in setvals:
print_hex_vector(hexF,hx,modify_vector,output_file,line)
如果值数字字符串,例如'1'
,'2'
等,您可以使用:
setvals = {data_msb,data_lsb,addr_msb,addr_lsb}
for vl,hx in enumerate([hex1,hex2,hex3,hex4,hex5,hex6],1):
if str(vl) in setvals:
print_hex_vector(hexF,hx,modify_vector,output_file,line)
枚举中的1
用于表示值以'1'
开头。
使用set
会略微提升效果。从现在开始,查找将平均在 O(1)中完成,因此可能会减少检查的数量。