Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 如何去掉我的switch语句,它在每个场景中做几乎相同的事情?_Jquery - Fatal编程技术网

Jquery 如何去掉我的switch语句,它在每个场景中做几乎相同的事情?

Jquery 如何去掉我的switch语句,它在每个场景中做几乎相同的事情?,jquery,Jquery,在给定单词(object)、语音(string)和时态(string)的情况下,我有一个使拉丁语动词变位的函数。供参考的是主动和被动的声音,然后是现在的,不完美的等等。。。是时态 本质上,我的嵌套switch语句只是运行不同的函数,它们的名称和用途非常相似。我想知道是否有某种方法可以提高效率,而我没有想到,因为它看起来非常冗余和笨拙 任何帮助都将不胜感激,以下是我的代码: function getChart(word, voice, tense) { //Root word variables

在给定单词(object)、语音(string)和时态(string)的情况下,我有一个使拉丁语动词变位的函数。供参考的是主动和被动的声音,然后是现在的,不完美的等等。。。是时态

本质上,我的嵌套switch语句只是运行不同的函数,它们的名称和用途非常相似。我想知道是否有某种方法可以提高效率,而我没有想到,因为它看起来非常冗余和笨拙

任何帮助都将不胜感激,以下是我的代码:

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);