【问题标题】:Is there a simple way to condense if statements into a function to check arguments?有没有一种简单的方法可以将 if 语句压缩成一个函数来检查参数?
【发布时间】:2020-05-30 03:38:30
【问题描述】:

我有一个用于处理命令的switch 语句,它按预期工作。但是,我也有大量的命令/案例。错误检查是为了确保程序在输入不是数字的内容时不会崩溃。有没有办法以某种方式将那些if statements 压缩成function

case "test":
        if (typeof args[1] === 'string') 
        {
            args[1] = parseInt(args[1])
            Functions.packs = args[1];
        }
        else if(Number.isNaN(+args[1]))
        {
            message.reply("The command was invalid.");
            break;
        }
        else
        {
            message.reply("The command was invalid.");
            break;
        }

这是目前每个命令的开头的样子,检查命令变得乏味。我已经尝试为它创建一个函数,但我尝试过的任何方法都没有奏效,所以我怀疑我是否走在正确的轨道上。

【问题讨论】:

  • Functions.packs 是什么?
  • 另一个文件中的变量Functions。该变量需要设置为用户作为第二个参数输入的内容(!test 2 表示 packs = 2)等等。
  • 检查他是否输入了数字,否则(否则)显示错误信息
  • 您可以使用正则表达式来执行此操作,例如: if(/[^\d]+/.test(args[1]) { // 如果您找到了数字以外的字符。 ..}

标签: javascript node.js error-handling discord.js


【解决方案1】:

我会尝试使用 .toString() 将所有内容强制为字符串,然后 parseInt() 结果。允许您只测试 NaN...

var numberTest = function(testArg){
  var testString = testArg.toString();
  var testNumber = parseInt(testString);
  var returnObj = {
    number: testNumber,
    valid: Number.isNaN(testNumber)
  };
  return returnObj;
}

case "test":
  var argTest = numberTest(args[1]);
  if(argTest.valid){
    Functions.packs = argTest.number;
  }
  else{
    message.reply("The command was invalid.");
  }
  break;

【讨论】:

    猜你喜欢
    • 2021-06-22
    • 1970-01-01
    • 1970-01-01
    • 2012-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多