Jquery 如何去掉我的switch语句,它在每个场景中做几乎相同的事情?
在给定单词(object)、语音(string)和时态(string)的情况下,我有一个使拉丁语动词变位的函数。供参考的是主动和被动的声音,然后是现在的,不完美的等等。。。是时态 本质上,我的嵌套switch语句只是运行不同的函数,它们的名称和用途非常相似。我想知道是否有某种方法可以提高效率,而我没有想到,因为它看起来非常冗余和笨拙 任何帮助都将不胜感激,以下是我的代码:Jquery 如何去掉我的switch语句,它在每个场景中做几乎相同的事情?,jquery,Jquery,在给定单词(object)、语音(string)和时态(string)的情况下,我有一个使拉丁语动词变位的函数。供参考的是主动和被动的声音,然后是现在的,不完美的等等。。。是时态 本质上,我的嵌套switch语句只是运行不同的函数,它们的名称和用途非常相似。我想知道是否有某种方法可以提高效率,而我没有想到,因为它看起来非常冗余和笨拙 任何帮助都将不胜感激,以下是我的代码: function getChart(word, voice, tense) { //Root word variables
function getChart(word, voice, tense) {
//Root word variables
var inf = word.inf;
var pp3 = word.pp3;
var pp4 = word.pp4;
var conj = word.conj;
//If voice is active go to the active charts for the tense
//If voice is passive go to the passive charts for the tense
switch(voice) {
case "Active":
switch(tense) {
case "Present":
activePresentConj(inf, conj);
break;
case "Imperfect":
activeImperfectConj(inf, conj);
break;
case "Future":
activeFutureConj(inf, conj);
break;
case "Perfect":
activePerfectConj(pp3);
break;
case "Plu Perfect":
activePluPerfectConj(pp3);
break;
case "Future Perfect":
activeFuturePerfectConj(pp3);
break;
default:
return null;
}
break;
case "Passive":
switch(tense) {
case "Present":
passivePresentConj(inf, conj);
break;
case "Imperfect":
passiveImperfectConj(inf, conj);
break;
case "Future":
passiveFutureConj(inf, conj);
break;
case "Perfect":
passivePerfectConj(pp4);
break;
case "Plu Perfect":
passivePluPerfectConj(pp4);
break;
case "Future Perfect":
passiveFuturePerfectConj(pp4);
break;
default:
return null;
}
break;
default:
return null;
}
}你只需打开时态,将声音转换成更通用的共轭方法,处理主动和被动声音 例:
可以使用字典保存对函数的引用,如下所示
//Add this to your initialization routine
var dict = {};
dict["Present"] = presentConj;
dict["Imperfect"] = imperfectConj;
dict["Future"] = futureConj;
//use this code to process a particular tense
var func = dict[tense];
if (func == undefined) return null;
func(inf, conj, voice);
这只是一个简单的例子。要使其在您的情况下工作,您必须定义所有函数,以便它们采用相同的参数(即使它们不一定使用所有参数)。您可能需要两个字典(一个用于被动,一个用于主动),或者您可以将语音和时态连接成一个字符串用于字典查找。如果代码完整且有效,则应将其发布在代码审阅中。此站点主要用于修复损坏的代码。如果您添加缺少的函数,那么最好将其发布在那里。
//Add this to your initialization routine
var dict = {};
dict["Present"] = presentConj;
dict["Imperfect"] = imperfectConj;
dict["Future"] = futureConj;
//use this code to process a particular tense
var func = dict[tense];
if (func == undefined) return null;
func(inf, conj, voice);