我有很多音乐和弦可以使用替代名称,而不必为每个替代名称(如果chord ==“ Maj”或“ maj” or)使用很多==和or来创建更长的线。 。请勿与Lua合作:
if chord=="Maj9" or chord="maj9" or chord=="M9" or chord=="Maj7(add9)" or chord=="M7(add9)" then notes="0,4,7,11,14" end
我需要一种更简单的方法,也许只是在Notepad ++中重新格式化行以使用数组, 此刻,每行200多个和弦中的每个和弦:
if chord=="Maj9,maj9,M9,Maj7(add9),M7(add9)" then notes="0,4,7,11,14" end
if chord=="mMaj7,minmaj7,mmaj7,min/maj7,mM7,m(addM7),m(+7),-(M7)" then notes="0,3,7,11" end
答案 0 :(得分:3)
正确的方法是规范您的输入。例如,使用任何传入的chord
值,并使用Lua的string.lower()
函数将字符串全部小写。通过规范化输入,可以简化处理该数据所需编写的逻辑。还要考虑其他方式来规范化数据。例如,您可能编写了一种将所有笔记转换为枚举列表的方法(C = 1,C#= 2,依此类推)。这样,等效的笔记将获得相同的内存中值。
这些只是使您步入正轨的一些想法。您应该不要尝试思考,然后对用户输入和弦名称的所有可能方式进行硬编码。