Lua if A==1 or 2 or 3 then

我有很多音乐和弦,它们可以有替代名称,而不必为每个替代名称创建更长的行,并且 if chord=="Maj" or "maj" 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
点赞
用户4403144
用户4403144

正确的方法是将您的输入进行规范化。例如,获取任何和弦(chord)值并使用Lua的string.lower()函数将字符串全部转换为小写。通过规范化您的输入,您简化了需要编写以处理数据的逻辑。考虑其他规范化数据的方式。例如,您可以编写一个方法将所有音符转换为枚举列表(C = 1,C#= 2等)。这样等价的音符在内存中的值相同。

这些只是一些让您了解的想法。您不应尝试想出然后硬编码用户可能输入的每种和弦名称。

2018-07-27 13:58:17