Lua如果A == 1或2或3,则

时间:2018-07-27 08:01:12

标签: lua

我有很多音乐和弦可以使用替代名称,而不必为每个替代名称(如果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

1 个答案:

答案 0 :(得分:3)

正确的方法是规范您的输入。例如,使用任何传入的chord值,并使用Lua的string.lower()函数将字符串全部小写。通过规范化输入,可以简化处理该数据所需编写的逻辑。还要考虑其他方式来规范化数据。例如,您可能编写了一种将所有笔记转换为枚举列表的方法(C = 1,C#= 2,依此类推)。这样,等效的笔记将获得相同的内存中值。

这些只是使您步入正轨的一些想法。您应该不要尝试思考,然后对用户输入和弦名称的所有可能方式进行硬编码。